.card{background:var(--bg-card);border:var(--card-border);border-radius:var(--radius-lg);padding:var(--card-padding);transition:all var(--transition-base)}.card:hover{border:var(--card-hover-border);box-shadow:var(--shadow-md)}.card.card--active{box-shadow:var(--card-active-shadow);border-color:var(--color-primary)}.card.card--compact{padding:var(--spacing-md)}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-color-lighter)}.card-title{margin:0;font-size:var(--font-lg);font-weight:600;color:#ffffffe6}.btn{padding:var(--spacing-sm) var(--spacing-md);border:none;border-radius:var(--radius-md);font-size:var(--font-sm);font-weight:500;cursor:pointer;transition:all var(--transition-fast);display:inline-flex;align-items:center;gap:var(--spacing-xs)}.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover);box-shadow:var(--shadow-primary)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover{background:var(--color-danger-hover);box-shadow:var(--shadow-danger)}.btn-secondary{background:var(--color-secondary);color:#fff}.btn-secondary:hover{background:var(--color-secondary-hover)}.btn.btn--loading{pointer-events:none;opacity:.7}.btn.btn--success{animation:successPulse .6s ease-out}@keyframes successPulse{0%,to{box-shadow:0 0 #4caf50b3}50%{box-shadow:0 0 0 10px #4caf5000}}.input,.select,.textarea{width:100%;padding:var(--spacing-sm);background:var(--bg-dark);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:#fff;font-size:var(--font-sm);transition:all var(--transition-fast)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--input-focus-ring)}.input:disabled,.select:disabled,.textarea:disabled{opacity:.5;cursor:not-allowed}.input--error{border-color:var(--color-danger)}.input--error:focus{box-shadow:0 0 0 3px #dc35454d}.form-group{margin-bottom:var(--spacing-md)}.form-label{display:block;margin-bottom:var(--spacing-xs);font-size:var(--font-sm);font-weight:500;color:#fffc}.form-help{margin-top:var(--spacing-xs);font-size:var(--font-xs);color:#ffffff80}.form-error{margin-top:var(--spacing-xs);font-size:var(--font-xs);color:var(--color-danger)}.badge{display:inline-flex;align-items:center;padding:.25rem .5rem;border-radius:var(--radius-sm);font-size:var(--font-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px}.badge-primary{background:#4caf5026;border:1px solid var(--color-primary);color:var(--color-primary)}.badge-danger{background:#dc354526;border:1px solid var(--color-danger);color:var(--color-danger)}.badge-warning{background:#ff980026;border:1px solid var(--color-warning);color:var(--color-warning)}.badge-info{background:#2196f326;border:1px solid var(--color-info);color:var(--color-info)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:root{--color-primary: #4caf50;--color-primary-hover: #66bb6a;--color-primary-dark: #388e3c;--color-danger: #dc3545;--color-danger-hover: #c82333;--color-warning: #ff9800;--color-info: #2196f3;--color-secondary: #6c757d;--color-secondary-hover: #5a6268;--bg-dark: #0a0a0a;--bg-base: #1a1a1a;--bg-card: #2a2a2a;--bg-elevated: rgba(255, 255, 255, .03);--bg-hover: rgba(255, 255, 255, .05);--border-color: #444;--border-color-light: rgba(255, 255, 255, .1);--border-color-lighter: rgba(255, 255, 255, .05);--spacing-xs: .5rem;--spacing-sm: .75rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-2xl: 16px;--font-xs: .75rem;--font-sm: .85rem;--font-base: .9rem;--font-md: 1rem;--font-lg: 1.1rem;--font-xl: 1.25rem;--font-2xl: 1.5rem;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 2px 8px rgba(0, 0, 0, .3);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .4);--shadow-xl: 0 8px 32px rgba(0, 0, 0, .5);--shadow-primary: 0 4px 12px rgba(76, 175, 80, .3);--shadow-success: 0 4px 12px rgba(76, 175, 80, .3);--shadow-danger: 0 4px 12px rgba(220, 53, 69, .3);--shadow-info: 0 4px 12px rgba(33, 150, 243, .3);--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--transition-slower: .5s ease;--card-padding: var(--spacing-lg);--card-gap: var(--spacing-lg);--card-border: 1px solid var(--border-color);--card-hover-border: 1px solid var(--border-color-light);--input-focus-ring: 0 0 0 3px rgba(76, 175, 80, .3);--card-active-shadow: var(--shadow-primary);--breakpoint-tablet: 1024px;--breakpoint-mobile: 768px;--breakpoint-small: 480px;--z-base: 0;--z-dropdown: 100;--z-sticky: 200;--z-modal: 1000;--z-toast: 2000;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;color:#ffffffde;background-color:var(--bg-base);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;padding:0;min-width:320px;min-height:100vh;background:#1a1a1a;color:#fff}#root{width:100%;min-height:100vh}h1,h2,h3,h4,h5,h6{font-weight:600}a{color:#fee715;text-decoration:none}a:hover{text-decoration:underline}button:focus-visible{outline:2px solid #4caf50;outline-offset:2px}input:focus,select:focus,textarea:focus{outline:2px solid #4caf50;outline-offset:-1px}.pu-builder{background:#1a1a1a;border:1px solid #333;border-radius:8px;padding:16px;margin-top:8px}.pu-builder-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #333;flex-wrap:wrap;gap:10px}.pu-builder-header h4{margin:0;color:#fff;font-size:1em;display:flex;align-items:center;gap:8px}.pu-builder-header h4 span{opacity:.6;font-weight:400}.pu-builder-tabs{display:flex;gap:4px;flex-wrap:wrap;flex-shrink:0}.pu-builder-tab{padding:6px 10px;background:#2a2a2a;border:1px solid #444;border-radius:4px;color:#888;font-size:.8em;cursor:pointer;transition:all .2s;white-space:nowrap}.pu-builder-tab:hover{background:#333;color:#aaa}.pu-builder-tab.active{background:#4a4a4a;color:#fff;border-color:#666}.pu-section{background:#222;border:1px solid #333;border-radius:6px;padding:14px;margin-bottom:12px}.pu-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.pu-section-title{font-size:.9em;font-weight:600;color:#ddd;display:flex;align-items:center;gap:8px}.pu-section-title .icon{font-size:1.1em}.pu-section-badge{padding:2px 8px;background:#3d4e5a;border-radius:10px;font-size:.75em;color:#aaa}.pu-section-badge.hw{background:#2d5a3d;color:#4ade80}.pu-row{display:flex;gap:12px;margin-bottom:12px;flex-wrap:wrap}.pu-row:last-child{margin-bottom:0}.pu-field{flex:1;min-width:120px}.pu-field.small{flex:0 0 80px;min-width:80px}.pu-field.medium{flex:0 0 140px;min-width:140px}.pu-field.large{flex:2;min-width:200px}.pu-field.full{flex:0 0 100%}.pu-field label{display:block;color:#888;font-size:.8em;margin-bottom:6px;font-weight:500}.pu-field input,.pu-field select,.pu-field textarea{width:100%;padding:8px 10px;background:#1e1e1e;color:#fff;border:1px solid #444;border-radius:4px;font-size:.9em;transition:border-color .2s}.pu-field input:focus,.pu-field select:focus,.pu-field textarea:focus{outline:none;border-color:#666}.pu-field input:disabled,.pu-field select:disabled{opacity:.5;cursor:not-allowed}.pu-field input[type=number]{-moz-appearance:textfield}.pu-field input[type=number]::-webkit-outer-spin-button,.pu-field input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.pu-field .description{font-size:.75em;color:#666;margin-top:4px}.pu-info-box{padding:12px 14px;background:#1e2a35;border:1px solid #3d5a6a;border-radius:6px;margin-top:12px;font-size:.85em;color:#9ec5d8;line-height:1.5}.pu-info-box strong{color:#79c0ff}.pu-checkbox-row{display:flex;align-items:center;gap:8px;padding:8px 0}.pu-checkbox-row input[type=checkbox]{width:16px;height:16px;margin:0;cursor:pointer}.pu-checkbox-row label{color:#ccc;font-size:.9em;cursor:pointer;margin:0}.pu-hw-toggle{display:inline-flex;align-items:center;gap:4px;margin-left:12px;padding:3px 8px;background:#2d5a3d;border-radius:4px;font-size:.75em;font-weight:600;color:#4ade80;cursor:pointer;transition:all .2s}.pu-hw-toggle:hover{background:#3d6a4d}.pu-hw-toggle input[type=checkbox]{width:12px;height:12px;margin:0;cursor:pointer}.pu-hw-toggle.disabled{background:#333;color:#666;cursor:not-allowed}.pu-hw-toggle.disabled input[type=checkbox]{cursor:not-allowed}.pu-toggle-group{display:flex;gap:8px;flex-wrap:wrap}.pu-toggle-btn{padding:8px 14px;background:#2a2a2a;border:1px solid #444;border-radius:4px;color:#888;font-size:.85em;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:6px}.pu-toggle-btn:hover{background:#333;color:#aaa;border-color:#555}.pu-toggle-btn.active{background:#3d5a4e;color:#4ade80;border-color:#4ade80}.pu-toggle-btn.active:hover{background:#4d6a5e}.pu-toggle-btn .icon{font-size:1.1em}.pu-resize-panel{display:flex;gap:12px;padding:12px;background:#1e1e1e;border-radius:4px;margin-top:8px;flex-wrap:wrap;align-items:flex-end}.pu-resize-panel .pu-field{min-width:100px}.pu-resize-dims{display:flex;align-items:center;gap:6px}.pu-resize-dims span{color:#666;font-size:1.2em}.pu-resize-dims input{width:80px}.pu-transforms{display:flex;gap:8px;flex-wrap:wrap}.pu-transform-btn{padding:8px 12px;background:#2a2a2a;border:1px solid #444;border-radius:4px;color:#888;font-size:.9em;cursor:pointer;transition:all .2s}.pu-transform-btn:hover{background:#333;color:#aaa}.pu-transform-btn.active{background:#4a4a8a;color:#a0a0ff;border-color:#6060a0}.pu-channel-mapper-btn{padding:10px 16px;background:linear-gradient(135deg,#4a3a6a,#3a4a6a);border:1px solid #5a5a8a;border-radius:6px;color:#c0c0ff;font-size:.9em;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:8px;width:100%;justify-content:center}.pu-channel-mapper-btn:hover{background:linear-gradient(135deg,#5a4a7a,#4a5a7a);border-color:#7070a0}.pu-channel-mapper-btn .badge{padding:2px 8px;background:#ffffff26;border-radius:10px;font-size:.8em}.pu-command-preview{background:#0d1117;border:1px solid #30363d;border-radius:6px;overflow:hidden}.pu-command-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#161b22;border-bottom:1px solid #30363d}.pu-command-header span{color:#8b949e;font-size:.85em;font-weight:500}.pu-command-copy{padding:5px 10px;background:#238636;border:none;border-radius:4px;color:#fff;font-size:.8em;cursor:pointer;transition:background .2s}.pu-command-copy:hover{background:#2ea043}.pu-command-copy.copied{background:#1f6feb}.pu-command-body{padding:14px;overflow-x:auto}.pu-command-body pre{margin:0;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.85em;line-height:1.6;color:#c9d1d9;white-space:pre-wrap;word-break:break-word}.pu-cmd-ffmpeg{color:#ff7b72;font-weight:700}.pu-cmd-flag{color:#79c0ff}.pu-cmd-value{color:#a5d6ff}.pu-cmd-url{color:#7ee787}.pu-cmd-filter{color:#d2a8ff}.pu-channel-mapper-overlay{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:10000;padding:20px}.pu-channel-mapper-modal{background:#1a1a1a;border:1px solid #444;border-radius:12px;max-width:800px;width:100%;max-height:90vh;overflow-y:auto}.pu-channel-mapper-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:#222;border-bottom:1px solid #333;border-radius:12px 12px 0 0}.pu-channel-mapper-header h3{margin:0;color:#fff;font-size:1.1em}.pu-channel-mapper-close{background:none;border:none;color:#888;font-size:1.5em;cursor:pointer;padding:0;line-height:1}.pu-channel-mapper-close:hover{color:#fff}.pu-channel-mapper-content{padding:20px}.pu-channel-grid{display:grid;gap:2px;background:#333;border-radius:8px;overflow:hidden;margin-bottom:16px}.pu-channel-grid-header{display:contents}.pu-channel-grid-header .cell{background:#2a2a2a;padding:10px;text-align:center;font-size:.8em;font-weight:600;color:#aaa}.pu-channel-grid-header .cell.corner{background:#252525;color:#666;font-style:italic}.pu-channel-row{display:contents}.pu-channel-row .cell{background:#1e1e1e;padding:8px;display:flex;align-items:center;justify-content:center;min-height:50px}.pu-channel-row .cell.label{background:#2a2a2a;font-size:.8em;font-weight:600;color:#aaa}.pu-channel-cell-content{display:flex;flex-direction:column;align-items:center;gap:4px}.pu-channel-cell-content input[type=checkbox]{width:18px;height:18px;cursor:pointer}.pu-channel-cell-content input[type=range]{width:60px;height:4px}.pu-channel-cell-content .gain-value{font-size:.7em;color:#888}.pu-channel-mapper-footer{display:flex;justify-content:space-between;align-items:center;padding-top:16px;border-top:1px solid #333}.pu-channel-mapper-presets{display:flex;gap:8px}.pu-channel-preset-btn{padding:6px 12px;background:#2a2a2a;border:1px solid #444;border-radius:4px;color:#aaa;font-size:.8em;cursor:pointer;transition:all .2s}.pu-channel-preset-btn:hover{background:#333;color:#fff}.pu-channel-mapper-actions{display:flex;gap:10px}.pu-channel-mapper-actions button{padding:8px 16px;border-radius:4px;font-size:.9em;cursor:pointer;transition:all .2s}.pu-channel-mapper-actions .cancel{background:#333;border:1px solid #444;color:#aaa}.pu-channel-mapper-actions .cancel:hover{background:#444;color:#fff}.pu-channel-mapper-actions .apply{background:#238636;border:none;color:#fff}.pu-channel-mapper-actions .apply:hover{background:#2ea043}@media(max-width:600px){.pu-row{flex-direction:column}.pu-field.small,.pu-field.medium{flex:0 0 100%}.pu-resize-panel{flex-direction:column}.pu-resize-dims{flex-direction:column;align-items:flex-start}.pu-resize-dims input{width:100%}}.preset-selector{margin-bottom:16px;padding:12px;background:#2a2a2a;border-radius:4px;border:1px solid #444}.preset-selector-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.preset-selector-header label{font-size:.9em;color:#aaa;font-weight:600}.btn-save-preset{padding:4px 12px;font-size:.85em;background:#007bff;border:none;border-radius:3px;color:#fff;cursor:pointer;transition:background .2s}.btn-save-preset:hover{background:#0056b3}.preset-empty{padding:20px;text-align:center;background:#1a1a1a;border-radius:4px;border:1px dashed #555}.preset-empty p{margin:0 0 8px;color:#aaa;font-size:.95em}.preset-empty small{color:#777;font-size:.85em}.preset-error{display:flex;justify-content:space-between;align-items:center;padding:12px;margin-bottom:12px;background:#dc3545;color:#fff;border-radius:4px;font-size:.9em;line-height:1.4}.btn-dismiss-error{background:transparent;border:none;color:#fff;font-size:1.5em;cursor:pointer;padding:0 8px;line-height:1;opacity:.8;transition:opacity .2s}.btn-dismiss-error:hover{opacity:1}.modal-error{padding:10px 12px;margin-top:12px;background:#dc3545;color:#fff;border-radius:4px;font-size:.9em;line-height:1.4}.preset-list{max-height:250px;overflow-y:auto;padding-right:8px;scrollbar-width:thin;scrollbar-color:#555 #1a1a1a}.preset-list::-webkit-scrollbar{width:10px}.preset-list::-webkit-scrollbar-track{background:#1a1a1a;border-radius:5px}.preset-list::-webkit-scrollbar-thumb{background:#555;border-radius:5px;border:2px solid #1a1a1a}.preset-list::-webkit-scrollbar-thumb:hover{background:#777}.preset-item{display:flex;justify-content:space-between;align-items:center;padding:8px;margin:4px 0;background:#1a1a1a;border-radius:3px;border:1px solid #333;transition:background .2s}.preset-item:hover{background:#2a2a2a}.preset-info{flex:1}.preset-info strong{color:#fff;font-size:.95em}.preset-info small{color:#888;font-size:.85em}.preset-actions{display:flex;gap:8px;align-items:center}.btn-load-preset{padding:6px 12px;background:#28a745;border:none;border-radius:3px;color:#fff;cursor:pointer;font-size:.85em;font-weight:600;transition:background .2s;white-space:nowrap}.btn-load-preset:hover{background:#218838}.btn-delete-preset{padding:4px 8px;background:transparent;border:none;color:#dc3545;cursor:pointer;font-size:1.1em;transition:opacity .2s}.btn-delete-preset:hover{opacity:.7}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:#1a1a1a;padding:24px;border-radius:8px;border:1px solid #444;max-width:500px;width:90%}.modal-content h3{margin-top:0;margin-bottom:16px;color:#fff}.modal-content p{color:#ccc;margin-bottom:16px}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:20px}.modal-actions button{padding:8px 16px;border-radius:4px;border:none;cursor:pointer;font-size:.95em;transition:background .2s}.modal-actions button:first-child{background:#007bff;color:#fff}.modal-actions button:first-child:hover{background:#0056b3}.modal-actions button:first-child:disabled{background:#555;cursor:not-allowed}.modal-actions button:last-child{background:#444;color:#fff}.modal-actions button:last-child:hover{background:#555}@media(max-width:768px){.preset-grid{grid-template-columns:1fr}.preset-card{padding:12px}.preset-header{flex-direction:column;align-items:flex-start;gap:8px}.preset-actions{width:100%;flex-direction:column}.preset-actions button{width:100%}}@media(max-width:480px){.preset-selector{padding:12px}.preset-card{padding:8px}.preset-name{font-size:14px}}.egress-list{margin-top:1rem}.egress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.egress-header h4{margin:0;color:#a0d468;font-size:1.1rem}.btn-add-egress{background:#4a9;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background .2s}.btn-add-egress:hover{background:#5ba}.egress-item{display:flex;gap:1rem;padding:1rem;background:#2a2a2a;border:1px solid #444;border-radius:6px;margin-bottom:.75rem;position:relative}.egress-number{display:flex;align-items:center;justify-content:center;min-width:32px;height:32px;background:#444;border-radius:50%;font-weight:700;color:#a0d468;font-size:.85rem}.egress-fields{flex:1;display:flex;flex-direction:column;gap:.75rem}.egress-row{display:flex;gap:.75rem;flex-wrap:wrap}.form-group-inline{display:flex;flex-direction:column;gap:.25rem;min-width:120px;flex:1}.form-group-inline label{font-size:.75rem;color:#888;text-transform:uppercase;letter-spacing:.5px}.form-group-inline input,.form-group-inline select{padding:.5rem;background:#1a1a1a;border:1px solid #444;border-radius:4px;color:#fff;font-size:.9rem}.form-group-inline input:focus,.form-group-inline select:focus{outline:none;border-color:#a0d468}.btn-remove-egress{position:absolute;top:.5rem;right:.5rem;width:28px;height:28px;background:#e74c3c;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1.2rem;line-height:1;transition:background .2s;display:flex;align-items:center;justify-content:center}.btn-remove-egress:hover:not(:disabled){background:#c0392b}.btn-remove-egress:disabled{background:#555;cursor:not-allowed;opacity:.5}.egress-info{padding:.75rem;background:#2a4a6a;border-left:3px solid #5b9bd5;border-radius:4px;font-size:.85rem;color:#aac;margin-top:.5rem}@media(max-width:768px){.egress-cards{grid-template-columns:1fr}.egress-card{padding:12px}.egress-header{flex-direction:column;align-items:flex-start;gap:8px}.egress-actions{width:100%;flex-direction:column}.egress-actions button{width:100%}.egress-info{font-size:13px}}@media(max-width:480px){.egress-card{padding:8px}.egress-title{font-size:14px}}.route-card{background:#2a2a2a;border:1px solid #444;border-radius:8px;padding:16px;margin-bottom:16px}.route-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.route-name{font-size:18px;font-weight:600;color:#fff;display:inline-flex;align-items:center;gap:4px}.route-name .route-name-text{white-space:nowrap}.route-name .edit-name-btn{background:transparent;border:none;cursor:pointer;padding:2px;font-size:.6em;opacity:.5;transition:opacity .2s;flex-shrink:0}.route-name .edit-name-btn:hover{opacity:1}.route-name .route-name-input{background:#333;border:1px solid #667eea;border-radius:3px;color:#fff;padding:4px 8px;font-size:.9em;font-weight:600;width:180px;outline:none}.route-name .route-name-input:focus{border-color:#764ba2;box-shadow:0 0 0 2px #667eea4d}.route-badges{display:flex;gap:8px;align-items:center}.mode-badge{padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;letter-spacing:.3px}.mode-badge.mode-passthrough{background:linear-gradient(135deg,#a0d468,#7cb342);color:#1a1a1a}.mode-badge.mode-transcode{background:linear-gradient(135deg,#ff6b6b,#ee5a52);color:#fff}.status-badge{padding:4px 12px;border-radius:4px;font-size:12px;text-transform:uppercase;font-weight:600}.status-stopped{background:#666;color:#fff}.status-running{background:linear-gradient(135deg,#10b981,#059669);color:#fff;position:relative;overflow:hidden}.status-running:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 4s ease-in-out infinite}@keyframes shimmer{0%{left:-100%}25%{left:100%}to{left:100%}}.status-starting{background:#ff9800;color:#fff}.route-info{margin-bottom:16px}.info-item{display:flex;gap:8px;margin-bottom:8px}.info-label{color:#999;font-size:14px;min-width:80px}.info-value{color:#fff;font-size:14px}.route-actions{display:flex;gap:8px;margin-bottom:16px;padding-top:4px}.btn{padding:8px 16px;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:background .2s}.btn:disabled{cursor:not-allowed;opacity:.6}.btn-primary{background:#64748b;color:#fff}.btn-primary:hover:not(:disabled){background:#475569}.btn-stop{background:#f44336;color:#fff;font-weight:600}.btn-stop:hover:not(:disabled){background:#da190b}.btn-secondary{background:#555;color:#fff}.btn-secondary:hover:not(:disabled){background:#666}.btn-danger{background:#f44336;color:#fff}.btn-danger:hover:not(:disabled){background:#da190b}.route-monitor{margin-top:16px;padding:16px;background:#1a1a1a;border-radius:4px;border:1px solid #333}.monitor-header{font-size:16px;font-weight:600;color:#64748b;margin-bottom:12px}.monitor-stats{display:flex;gap:24px;flex-wrap:wrap}.stat-item{display:flex;gap:8px;align-items:center}.stat-label{color:#999;font-size:14px}.stat-value{color:#fff;font-size:14px;font-weight:600}@media(max-width:768px){.route-card{padding:12px}.route-header{flex-direction:column;align-items:flex-start;gap:12px}.route-info-grid{grid-template-columns:1fr}.route-actions{flex-wrap:wrap;width:100%}.route-actions button{flex:1;min-width:120px}.monitor-stats{flex-direction:column}.stat-item{width:100%;justify-content:space-between}}@media(max-width:480px){.route-card{padding:8px}.route-name{font-size:16px}.status-badge{font-size:10px;padding:3px 10px}.route-actions button{font-size:12px;padding:6px 12px}}@media(max-width:768px){.info-item{flex-direction:column;align-items:flex-start}.info-label{min-width:auto;margin-bottom:4px}.info-value{width:100%}}.status-dots-bar{line-height:1.4;max-height:2.8em;overflow:hidden}@media(hover:none)and (pointer:coarse){.btn{min-height:44px;min-width:44px}.route-actions{gap:12px}.route-actions button{padding:12px 16px}}.route-card.highlighted{animation:highlightPulse .5s ease-in-out 3;box-shadow:0 0 20px #4caf5099;border-color:#4caf50!important}:root{--route-gap: 6px;--grid-full: 28px 32px 6px 400px 80px 140px 60px 60px 45px 65px auto}.route-table-container{background:#1a1a1a;border:1px solid #333;border-radius:4px;overflow:hidden}.bulk-actions-toolbar{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#2a4a2a;border-bottom:2px solid #4caf50}.selected-count{font-size:.85rem;font-weight:600;color:#4caf50}.bulk-actions-buttons{display:flex;gap:8px}.bulk-btn{padding:6px 12px;border:1px solid #444;border-radius:3px;background:#333;color:#fff;cursor:pointer;font-size:.8rem;font-weight:600;transition:all .2s}.bulk-btn:hover{background:#444;transform:translateY(-1px)}.bulk-btn:disabled{opacity:.5;cursor:not-allowed}.bulk-btn.start-btn:hover{border-color:#4caf50;color:#4caf50}.bulk-btn.stop-btn:hover{border-color:#ff9800;color:#ff9800}.bulk-btn.delete-btn:hover{border-color:#f44336;color:#f44336}.bulk-btn.cancel-btn:hover{border-color:#888}.route-table-header{display:grid;grid-template-columns:var(--grid-full);gap:var(--route-gap);padding:10px 12px;background:#2a2a2a;border-bottom:2px solid #444;font-size:.75rem;font-weight:600;color:#aaa;text-transform:uppercase;letter-spacing:.5px}.sortable-header{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .2s}.sortable-header:hover{color:#4caf50}.sort-indicator{color:#4caf50;font-size:.85rem;font-family:system-ui,sans-serif}.route-table-body{max-height:calc(100vh - 250px);overflow-y:auto}.route-table-row{display:grid;grid-template-columns:var(--grid-full);gap:var(--route-gap);padding:8px 12px;border-bottom:1px solid #2a2a2a;align-items:center;transition:background .2s;font-size:.85rem;position:relative}.route-table-row:hover{background:#222}.route-table-row.drop-over{background:#44aa9926;border:2px dashed #44aa99;border-radius:4px}.outputs-cascade-container{margin-left:0;border-left:none;background:transparent;padding:0}.route-table-row.output-row{background:#ffffff05;font-size:.7rem;padding:2px 8px;min-height:auto;border-bottom:1px solid rgba(138,100,200,.1)}.route-table-row.output-row:last-child{border-bottom:none}.route-table-row.output-row .route-table-cell{align-self:center}.route-table-row.output-row:hover{background:linear-gradient(90deg,#643c961f,#5032780d);border-left-color:#8a64c8b3}.route-table-row.output-row .action-btn{width:20px;height:20px;min-width:20px;font-size:.65rem}.route-table-row.output-row .route-actions{gap:3px}.route-table-cell{color:#ddd;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.checkbox-cell{display:flex;align-items:center;justify-content:center}.checkbox-cell input[type=checkbox]{cursor:pointer;width:16px;height:16px}.expand-cell{display:flex;align-items:center;justify-content:center}.expand-btn{background:transparent;border:none;color:#888;cursor:pointer;padding:4px 8px;font-size:.8rem;transition:color .2s}.expand-btn:hover{color:#4caf50}.status-cell{display:flex;align-items:center;justify-content:center;overflow:visible;margin-right:0}.route-table-row .status-cell{justify-content:flex-start}.route-table-row:not(.output-row) .status-cell{margin-left:-6px}.status-bar{width:6px;height:24px;border-radius:2px;transition:background-color .3s}.name-cell{font-weight:600;color:#fff;overflow:hidden;white-space:normal}.name-cell.output-name{font-weight:400;color:#aaa;font-size:.8rem;padding-left:16px}.mode-cell{font-family:Courier New,monospace;color:#4caf50;font-size:.8rem}.uptime-cell,.bitrate-cell{font-family:Courier New,monospace;color:#888;font-size:.8rem}.codec-cell{font-family:Courier New,monospace;color:#888;font-size:.75rem}.autostart-cell{display:flex;justify-content:center;align-items:center}.actions-cell{display:flex;justify-content:flex-end;overflow:visible}.route-table-row .route-actions{display:flex;flex-wrap:nowrap;gap:4px;align-items:center;justify-content:flex-end}.action-btn{background:transparent;border:1px solid #444;color:#888;cursor:pointer;padding:0;border-radius:3px;font-size:.7rem;transition:all .2s;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;min-width:22px;box-sizing:border-box;line-height:1}.action-btn:hover{border-color:#4caf50;background:#4caf501a;transform:translateY(-1px)}.action-btn:disabled{opacity:.5;cursor:not-allowed}.start-btn:hover{color:#4caf50}.stop-btn:hover{color:#ff9800}.edit-btn:hover{color:#2196f3}.delete-btn:hover{color:#f44336;border-color:#f44336;background:#f443361a}.toggle-btn{font-size:1rem}.toggle-btn.enabled:hover{color:#ff9800;border-color:#ff9800}.toggle-btn.disabled{opacity:.5}.toggle-btn.disabled:hover{color:#4caf50;border-color:#4caf50}.quality-badge{font-weight:600;font-size:.75em;padding:2px 6px;border-radius:3px;background:#0006;flex-shrink:0;white-space:nowrap}.collision-badge{flex-shrink:0;white-space:nowrap;padding:2px 6px;border-radius:3px;font-size:.7em;font-weight:500}.collision-badge.output-collision{background:#fff3cd;color:#856404;border:1px solid #ffc107}.collision-badge.input-collision{background:#e3f2fd;color:#1565c0;border:1px solid #90caf9}.no-routes-table{padding:40px;text-align:center;color:#666;font-size:.9rem}.name-cell-content{display:flex;flex-direction:column;gap:4px;min-width:0;max-width:100%;overflow:hidden}.name-cell-header{display:flex;align-items:center;gap:4px;min-width:0;flex-wrap:wrap;overflow:hidden}.route-name-text{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;min-width:60px}.input-info{font-size:.7em;color:#999;display:flex;align-items:center;gap:4px;background:linear-gradient(90deg,rgba(0,150,180,.05) 0%,transparent 100%);border-left:2px solid rgba(0,180,200,.3);padding:4px 6px;border-radius:0 3px 3px 0;margin-left:-4px;min-width:0;max-width:100%;overflow:hidden}.edit-input-btn{background:transparent;border:none;cursor:pointer;padding:2px;font-size:.9em;opacity:.6;transition:opacity .2s;flex-shrink:0}.edit-input-btn:hover{opacity:1}.ingest-address-block{display:flex;flex-direction:column;gap:2px;min-width:0;flex-grow:0;flex-shrink:1;overflow:hidden}.ingest-address-block>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ingest-name{font-size:.85em;color:#667eea;font-style:italic;opacity:.9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.edit-name-btn{background:transparent;border:none;cursor:pointer;padding:2px;font-size:.7em;opacity:.5;transition:opacity .2s;flex-shrink:0}.edit-name-btn:hover{opacity:1}.route-name-input{background:#333;border:1px solid #667eea;border-radius:3px;color:#fff;padding:2px 6px;font-size:.9em;font-weight:600;width:150px;outline:none}.route-name-input:focus{border-color:#764ba2;box-shadow:0 0 0 2px #667eea4d}.outputs-cell-content{display:flex;flex-direction:column;gap:2px}.status-squares-bar{display:flex;align-items:center;gap:2px;margin-bottom:2px;flex-wrap:wrap}.show-outputs-btn{font-size:.65rem;color:#888;white-space:nowrap;padding:3px 0;margin-top:4px;background:transparent;border:none;cursor:pointer;text-align:left}.show-outputs-btn:hover{color:#4caf50}.status-square{display:inline-block;width:6px;height:6px;border-radius:1px;flex-shrink:0}.output-count{font-size:.6em;color:#888;margin-left:4px}.outputs-cell .output-item{font-size:.7em;display:flex;align-items:center;gap:4px}.output-icon{font-size:.9em}.output-name{color:#999;font-weight:500}.output-name.connected{color:#4caf50}.output-stat{color:#4caf50;font-size:.9em}.output-paused{color:#ff9800}.output-icon-btn{background:none;border:none;padding:0;margin:0;font-size:inherit;cursor:pointer;line-height:1}.output-icon-btn.copyable{cursor:pointer;transition:transform .1s}.output-icon-btn.copyable:hover{transform:scale(1.3)}.output-icon-btn.copyable:active{transform:scale(.95)}.output-more{font-size:.65em;color:#666;font-style:italic}.output-row-name{display:flex;align-items:center;gap:4px;font-size:.85em;min-width:0}.output-label{font-weight:500;font-size:.9em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1 1 0}.edit-output-btn-inline,.delete-output-btn-inline{background:transparent;border:none;cursor:pointer;padding:2px 4px;font-size:.8em;opacity:.5;transition:opacity .2s,transform .2s;flex-shrink:0}.edit-output-btn-inline:hover,.delete-output-btn-inline:hover{opacity:1;transform:scale(1.1)}.unnamed-output{color:#888;font-style:italic}.output-row-dest{font-size:.75em;display:flex;align-items:center;gap:6px;color:#aaa}.dest-address{font-family:monospace}.client-count{color:#4caf50;font-size:.95em;font-weight:600}.drop-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#44aa991a;z-index:5;pointer-events:none}.drop-label{background:#4a9;color:#fff;padding:6px 12px;border-radius:4px;font-size:.8em;font-weight:600;box-shadow:0 2px 8px #0000004d}.drop-indicator-line{position:absolute;top:-2px;left:0;right:0;height:4px;background:linear-gradient(90deg,#4a9,#5ba);border-radius:2px;z-index:10;box-shadow:0 0 12px #4a9c}.drag-handle{cursor:grab;color:#666;font-size:.9em;touch-action:none}.drag-handle.dragging{cursor:grabbing;color:#ffc107}.autostart-checkbox{cursor:pointer;width:16px;height:16px}.add-output-btn{border-color:#4caf50!important;color:#4caf50!important}.add-output-btn:hover{background:#4caf501a!important}.metrics-btn:hover{color:#ff9800;border-color:#ff9800}.metrics-btn.active{background:#ff9800;color:#fff;border-color:#ff9800}.route-metrics-row{padding:12px;background:#1a1a1a;border-bottom:1px solid #333}.route-metrics-row.output-metrics-row{margin-left:30px;border-left:3px solid #2196f3}.route-table-container.compact{--col-checkbox: 20px;--col-expand: 22px;--col-status: 4px;--col-name: minmax(200px, 400px);--col-mode: 60px;--col-outputs: minmax(120px, 200px);--col-uptime: 55px;--col-bitrate: 55px;--col-autostart: 35px;--col-codec: 50px;--col-actions: 80px;--route-gap: 3px}.route-table-container.compact .route-table-header{padding:4px 6px;font-size:.6rem;letter-spacing:0}.route-table-container.compact .route-table-body{max-height:none}.route-table-container.compact .route-table-row{padding:3px 6px;font-size:.7rem}.route-table-container.compact .route-table-row.output-row{font-size:.65rem}.route-table-container.compact .status-bar{width:4px;height:16px}.route-table-container.compact .expand-btn{padding:1px 4px;font-size:.6rem}.route-table-container.compact .checkbox-cell input[type=checkbox]{width:12px;height:12px}.route-table-container.compact .action-btn{width:20px;height:20px;min-width:20px;font-size:.65rem}.route-table-container.compact .route-actions{gap:3px}.route-table-container.compact .route-table-row.output-row .action-btn{width:18px;height:18px;min-width:18px;font-size:.6rem}.route-table-container.compact .name-cell{font-size:.7rem;white-space:normal;overflow:visible}.route-table-container.compact .name-cell.output-name{font-size:.65rem;padding-left:8px;white-space:normal;overflow:visible}.route-table-container.compact .mode-cell,.route-table-container.compact .uptime-cell,.route-table-container.compact .bitrate-cell,.route-table-container.compact .codec-cell{font-size:.6rem}.route-table-container.compact .bulk-actions-toolbar{padding:4px 6px}.route-table-container.compact .bulk-btn{padding:3px 6px;font-size:.65rem}@media(max-width:1200px){:root{--grid-full: 28px 32px 6px 320px 70px 120px 55px 55px auto}.autostart-cell,.codec-cell{display:none}.route-table-header,.route-table-row{font-size:.8rem}}@media(max-width:900px){:root{--grid-full: 28px 32px 6px 280px 80px 50px 50px auto}.mode-cell,.autostart-cell,.codec-cell{display:none}.route-table-header,.route-table-row{font-size:.8rem}.route-table-row .route-actions{gap:1px}.route-table-row .action-btn{width:12px;height:12px;min-width:12px;flex-shrink:0;font-size:.45rem}}@media(max-width:768px){:root{--grid-full: 26px 28px 5px 220px 50px 50px auto;--route-gap: 4px}.mode-cell,.outputs-cell,.autostart-cell,.codec-cell{display:none}.route-table-header,.route-table-row{font-size:.72rem;padding:6px}.bulk-actions-toolbar{flex-direction:column;align-items:flex-start;gap:6px}.bulk-actions-buttons{width:100%;justify-content:space-between}.bulk-btn{flex:1;padding:5px 6px;font-size:.72rem}.route-table-row:not(.output-row) .route-actions .delete-btn,.route-table-row:not(.output-row) .route-actions .metrics-btn{display:none}.route-table-row .route-actions{flex-wrap:nowrap;gap:2px}.route-table-row .action-btn{width:16px;height:16px;min-width:16px;flex-shrink:0;font-size:.5rem}.route-table-row.output-row .action-btn{width:14px;height:14px;min-width:14px;font-size:.45rem}}@media(max-width:480px){:root{--grid-full: 24px 24px 4px 180px auto;--route-gap: 3px}.mode-cell,.outputs-cell,.uptime-cell,.bitrate-cell,.autostart-cell,.codec-cell{display:none}.route-table-header,.route-table-row{padding:5px 4px;font-size:.68rem}.expand-btn{padding:2px 3px;font-size:.7rem}.route-table-row:not(.output-row) .route-actions .delete-btn,.route-table-row:not(.output-row) .route-actions .metrics-btn{display:none}.route-table-row .route-actions{flex-wrap:nowrap;gap:2px}.route-table-row .action-btn{width:14px;height:14px;min-width:14px;flex-shrink:0;font-size:.45rem}.route-table-row.output-row .action-btn{width:12px;height:12px;min-width:12px;font-size:.4rem}.route-table-row.output-row .route-actions{gap:1px}.status-bar{width:4px;height:18px}}.input-suggestion-banner{display:flex;align-items:center;gap:12px;padding:10px 16px;background:linear-gradient(135deg,#2d4a2d,#1a3a2a);border-left:4px solid #4caf50;margin:0;animation:slideDown .3s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.input-suggestion-banner span{flex:1;color:#a5d6a7;font-size:.9rem;font-weight:500}.suggestion-btn{padding:6px 14px;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:600;transition:all .2s ease}.suggestion-btn.primary{background:#4caf50;color:#fff}.suggestion-btn.primary:hover{background:#66bb6a;transform:translateY(-1px)}.suggestion-btn.secondary{background:transparent;color:#888;padding:6px 10px}.suggestion-btn.secondary:hover{color:#fff;background:#ffffff1a}.route-table-row.highlighted{animation:highlightPulse .5s ease-in-out 3;box-shadow:0 0 20px #4caf5099;border-left:3px solid #4caf50!important;background:linear-gradient(90deg,rgba(76,175,80,.15) 0%,transparent 50%)}@keyframes highlightPulse{0%,to{box-shadow:0 0 10px #4caf5066}50%{box-shadow:0 0 25px #4caf50cc}}.pu-badge{margin-left:6px;padding:1px 5px;background:#1a2a1a;color:#4caf50;font-size:.7em;border-radius:3px;font-weight:500;border:1px solid #4caf50;white-space:nowrap}.multi-input-list{display:flex;flex-direction:column;gap:4px;margin-top:4px;font-size:.75em;background:linear-gradient(90deg,rgba(0,150,180,.06) 0%,transparent 100%);border-left:3px solid rgba(0,180,200,.4);border-radius:0 4px 4px 0;padding:6px 8px;margin-left:-4px;min-width:0;max-width:100%;overflow:hidden}.multi-input-header{display:flex;align-items:center;gap:8px;margin-bottom:4px;padding-bottom:4px;border-bottom:1px solid rgba(0,180,200,.2)}.input-badge{background:#3a3a4a;color:#aaa;padding:2px 6px;border-radius:3px;font-size:.65em;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.failover-badge{background:linear-gradient(135deg,#2196f3,#1976d2);color:#fff;padding:2px 6px;border:none;border-radius:3px;font-size:.75em;font-weight:600;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .2s ease}.failover-badge:hover{background:linear-gradient(135deg,#42a5f5,#2196f3);transform:translateY(-1px)}.failover-badge:disabled{opacity:.6;cursor:not-allowed;transform:none}.failover-badge--disabled{background:linear-gradient(135deg,#666,#555)}.failover-badge--disabled:hover{background:linear-gradient(135deg,#777,#666)}.force-failover-btn-table{background:linear-gradient(135deg,#ff9800,#f57c00);border:none;color:#fff;padding:2px 8px;border-radius:3px;font-size:.7em;font-weight:600;cursor:pointer;transition:all .2s}.force-failover-btn-table:hover{background:linear-gradient(135deg,#ffa726,#ff9800);transform:translateY(-1px)}.force-failover-btn-table:disabled{opacity:.5;cursor:not-allowed}.multi-input-item{display:flex;align-items:center;gap:6px;padding:3px 6px;background:#ffffff08;border-radius:3px;border-left:2px solid transparent}.multi-input-item.active{background:#4caf501a;border-left-color:#4caf50}.input-details{display:flex;flex-direction:column;gap:1px;min-width:0;max-width:180px;flex-shrink:0;overflow:hidden}.input-address{color:#ccc;font-family:Courier New,monospace;font-size:.9em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.input-name{color:#667eea;font-size:.85em;font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}.active-badge{background:#4caf50;color:#fff;padding:1px 4px;border-radius:2px;font-size:.65em;font-weight:600;text-transform:uppercase;flex-shrink:0;width:30px;text-align:center;box-sizing:border-box}.set-active-btn{background:transparent;border:1px solid #555;color:#888;padding:1px 4px;width:30px;text-align:center;box-sizing:border-box;border-radius:2px;font-size:.7em;cursor:pointer;transition:all .2s;flex-shrink:0}.set-active-btn:hover{border-color:#4caf50;color:#4caf50;background:#4caf501a}.set-active-btn:disabled{opacity:.5;cursor:not-allowed}.set-active-btn.will-restart{border-color:#ff9800;color:#ff9800}.set-active-btn.will-restart:hover{background:#ff980026;border-color:#ffb74d;color:#ffb74d}.restart-indicator{margin-right:3px;font-size:.9em}.edit-input-btn-multi,.delete-input-btn-multi{background:transparent;border:none;cursor:pointer;padding:2px 4px;font-size:.85em;opacity:.5;transition:opacity .2s,transform .2s;flex-shrink:0}.edit-input-btn-multi:hover,.delete-input-btn-multi:hover{opacity:1;transform:scale(1.1)}.delete-input-btn-multi:disabled{opacity:.3;cursor:not-allowed}.toggle-input-btn-multi{background:transparent;border:none;cursor:pointer;padding:2px 4px;font-size:.85em;opacity:.6;transition:opacity .2s,transform .2s;flex-shrink:0}.toggle-input-btn-multi:hover{opacity:1;transform:scale(1.1)}.toggle-input-btn-multi.disabled{opacity:.4}.toggle-input-btn-multi:disabled{opacity:.3;cursor:not-allowed}.add-input-btn-table{background:transparent;border:1px dashed #555;color:#888;padding:3px 8px;border-radius:3px;font-size:.8em;cursor:pointer;transition:all .2s;text-align:center;margin-top:2px}.add-input-btn-table:hover{border-color:#4caf50;color:#4caf50;background:#4caf500d}.add-input-btn-small{background:transparent;border:1px solid #444;color:#4caf50;width:18px;height:18px;border-radius:50%;font-size:.85em;font-weight:600;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-left:4px}.add-input-btn-small:hover{background:#4caf501a;border-color:#4caf50;transform:scale(1.1)}.pending-connection-warning-table{background:linear-gradient(135deg,#3d2f00,#2a2000);border:1px solid #ffc107;border-radius:4px;padding:6px 10px;margin-top:4px;color:#ffc107;font-size:.8em;font-weight:500;animation:pulseWarning 2s ease-in-out infinite}@keyframes pulseWarning{0%,to{opacity:.85}50%{opacity:1}}:root{--vajra-black: #0a0a0c;--vajra-surface: #111114;--vajra-border: #1e1e24;--vajra-border-light: #2a2a32;--vajra-text: #e8e8ec;--vajra-text-dim: #6b6b78;--vajra-amber: #d4a447;--vajra-amber-dim: rgba(212, 164, 71, .15);--vajra-red: #e63946;--vajra-green: #2ecc71}.container{max-width:1400px;margin:0 auto;padding:16px 24px}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:12px 20px;background:var(--vajra-surface);border-radius:2px;border:1px solid var(--vajra-border);border-bottom:2px solid var(--vajra-amber)}.brand{display:flex;align-items:baseline;gap:6px;-webkit-user-select:none;user-select:none}.brand-name{font-family:Arial Black,Helvetica Neue,sans-serif;font-size:1.4rem;font-weight:900;color:var(--vajra-amber);letter-spacing:3px;text-transform:uppercase}.brand-tagline{font-family:Helvetica Neue,Arial,sans-serif;font-size:.85rem;font-weight:300;color:var(--vajra-text-dim);letter-spacing:4px;text-transform:lowercase}.header-title{display:flex;align-items:center;gap:24px}.view-toggle-btn{padding:6px 14px;background:transparent;color:var(--vajra-text-dim);border:1px solid var(--vajra-border-light);border-radius:2px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:1px;transition:all .15s ease}.view-toggle-btn:hover{background:var(--vajra-amber-dim);border-color:var(--vajra-amber);color:var(--vajra-amber)}.view-controls{display:flex;align-items:center;gap:16px}.sort-controls{display:flex;align-items:center;gap:2px;padding:2px;background:var(--vajra-black);border-radius:2px;border:1px solid var(--vajra-border)}.sort-label{font-size:.65rem;color:var(--vajra-text-dim);margin-right:8px;margin-left:8px;text-transform:uppercase;letter-spacing:1px;font-weight:500}.sort-btn{padding:5px 12px;background:transparent;color:var(--vajra-text-dim);border:none;border-radius:1px;cursor:pointer;font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px;transition:all .1s}.sort-btn:hover{background:var(--vajra-border);color:var(--vajra-text)}.sort-btn.active{background:var(--vajra-amber);color:var(--vajra-black)}.header-separator{width:1px;height:20px;background:var(--vajra-border-light);margin:0 12px}.user-info{display:flex;align-items:center;gap:10px;padding:6px 14px;background:var(--vajra-black);border-radius:2px;border:1px solid var(--vajra-border)}.user-name{font-size:.8rem;color:var(--vajra-text);font-weight:500;letter-spacing:.5px}.user-role{font-size:.6rem;padding:3px 8px;background:var(--vajra-amber-dim);border-radius:1px;color:var(--vajra-amber);text-transform:uppercase;font-weight:600;letter-spacing:1px}.header-actions{display:flex;gap:6px;align-items:center}.tenant-badge{display:flex;flex-direction:column;align-items:flex-end;padding:6px 12px;background:var(--vajra-amber-dim);border:1px solid var(--vajra-amber);border-radius:2px;margin-right:8px}.tenant-name{font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:600;color:var(--vajra-amber);text-transform:uppercase;letter-spacing:1px}.tenant-usage{font-family:Helvetica Neue,Arial,sans-serif;font-size:.65rem;font-weight:400;color:var(--vajra-text-dim)}.tenant-ports{font-family:JetBrains Mono,Courier New,monospace;font-size:.6rem;font-weight:500;color:var(--vajra-text-dim);margin-top:2px;padding-top:2px;border-top:1px solid var(--vajra-border)}.nav-btn{padding:8px 16px;background:var(--vajra-black);color:var(--vajra-text-dim);border:1px solid var(--vajra-border);border-radius:2px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:1px;transition:all .1s ease;display:flex;align-items:center;gap:6px}.nav-btn:hover{background:var(--vajra-surface);border-color:var(--vajra-amber);color:var(--vajra-text)}.nav-btn.active{background:var(--vajra-amber-dim);border-color:var(--vajra-amber);color:var(--vajra-amber)}.logout-btn{padding:8px 14px;background:transparent;color:var(--vajra-text-dim);border:1px solid var(--vajra-border);border-radius:2px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:1px;transition:all .1s ease}.logout-btn:hover{background:#e639461a;border-color:var(--vajra-red);color:var(--vajra-red)}.add-route-btn{background:var(--vajra-amber);color:var(--vajra-black);border:none;padding:8px 18px;border-radius:2px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all .1s ease}.add-route-btn:hover:not(:disabled){background:#e8b84a;box-shadow:0 0 12px #d4a44766}.add-route-btn:disabled{background:var(--vajra-border);color:var(--vajra-text-dim);cursor:not-allowed}.route-list{display:flex;flex-direction:column;gap:16px;min-height:400px}.no-routes{text-align:center;padding:60px 40px;color:var(--vajra-text-dim);font-size:.9rem;font-family:Helvetica Neue,Arial,sans-serif;letter-spacing:1px;text-transform:uppercase}.loading,.error{text-align:center;padding:40px;font-size:.85rem;color:var(--vajra-text-dim)}.error{color:var(--vajra-red)}.footer{margin-top:24px;padding-top:16px;border-top:1px solid var(--vajra-border);text-align:center}.ws-status{color:var(--vajra-text-dim);font-size:.7rem;font-family:Helvetica Neue,Arial,sans-serif;text-transform:uppercase;letter-spacing:1px}.ws-status-connected{color:var(--vajra-green);font-weight:600}.ws-status-connecting{color:var(--vajra-amber);font-weight:600}.ws-status-disconnected{color:var(--vajra-text-dim);font-weight:600}.ws-status-error{color:var(--vajra-red);font-weight:600}.collision-warning{background:#e6394614;color:var(--vajra-red);padding:10px 16px;border-radius:2px;margin:0 0 16px;border:1px solid rgba(230,57,70,.3);border-left:3px solid var(--vajra-red);display:flex;align-items:center;justify-content:space-between;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;text-transform:uppercase;letter-spacing:.5px}.collision-warning-content{display:flex;align-items:center;gap:10px}.collision-warning-hint{font-size:.7rem;opacity:.6;color:var(--vajra-text-dim)}.modal-overlay{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:var(--vajra-surface);padding:24px;border-radius:2px;border:1px solid var(--vajra-border);border-top:2px solid var(--vajra-amber);min-width:420px;max-width:90%;box-shadow:0 16px 48px #0009}.modal-title{margin:0 0 20px;color:var(--vajra-text);font-family:Helvetica Neue,Arial,sans-serif;font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:2px}.modal-input{width:100%;padding:12px 14px;background:var(--vajra-black);border:1px solid var(--vajra-border);border-radius:2px;color:var(--vajra-text);font-family:Helvetica Neue,Arial,sans-serif;font-size:.9rem;margin-bottom:20px;transition:border-color .15s}.modal-input:focus{outline:none;border-color:var(--vajra-amber)}.modal-input::placeholder{color:var(--vajra-text-dim)}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.modal-btn{padding:10px 20px;border:1px solid transparent;border-radius:2px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:1px;transition:all .1s}.modal-btn-secondary{background:var(--vajra-black);color:var(--vajra-text-dim);border-color:var(--vajra-border)}.modal-btn-secondary:hover{background:var(--vajra-border);color:var(--vajra-text)}.modal-btn-primary{background:var(--vajra-amber);color:var(--vajra-black)}.modal-btn-primary:hover{background:#e8b84a;box-shadow:0 0 12px #d4a44766}.drag-overlay{background:var(--vajra-amber);padding:12px 18px;border-radius:2px;color:var(--vajra-black);font-family:Helvetica Neue,Arial,sans-serif;font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:1px;box-shadow:0 8px 24px #00000080;border:1px solid rgba(255,255,255,.2);cursor:grabbing;min-width:180px}@media(max-width:768px){.container{padding:12px}.header{flex-direction:column;align-items:flex-start;gap:12px}.header-title{width:100%;justify-content:space-between}.brand-name{font-size:1.2rem}.header-actions{width:100%;flex-wrap:wrap;gap:8px}.user-info{width:100%;margin-right:0;justify-content:center}.add-route-btn{flex:1 1 auto;min-width:140px}}@media(max-width:480px){.container{padding:8px}.header h1{font-size:20px}.header-title{flex-direction:column;align-items:flex-start;gap:8px}.view-controls{width:100%;flex-direction:column;align-items:stretch;gap:8px}.view-toggle-btn{width:100%}.sort-controls{justify-content:center}.header-actions{flex-direction:column}.user-info{flex-direction:column;gap:4px;padding:8px}.add-route-btn{width:100%}}@media(hover:none)and (pointer:coarse){.add-route-btn{min-height:44px;font-size:16px}}.login-container{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--vajra-black, #0a0a0c);overflow:hidden}.login-background{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;z-index:0}.login-gradient-1,.login-gradient-2,.login-gradient-3{position:absolute;border-radius:50%;filter:blur(100px);opacity:.08;animation:float 25s ease-in-out infinite}.login-gradient-1{width:500px;height:500px;background:radial-gradient(circle,var(--vajra-amber, #d4a447) 0%,transparent 70%);top:-200px;left:-200px;animation-delay:0s}.login-gradient-2{width:400px;height:400px;background:radial-gradient(circle,var(--vajra-amber, #d4a447) 0%,transparent 70%);bottom:-150px;right:-150px;animation-delay:8s}.login-gradient-3{width:300px;height:300px;background:radial-gradient(circle,var(--vajra-red, #e63946) 0%,transparent 70%);top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:16s}@keyframes float{0%,to{transform:translate(0) scale(1)}33%{transform:translate(20px,-20px) scale(1.05)}66%{transform:translate(-15px,15px) scale(.95)}}.login-card{position:relative;z-index:1;width:100%;max-width:400px;background:var(--vajra-surface, #111114);border-radius:2px;border:1px solid var(--vajra-border, #1e1e24);border-top:2px solid var(--vajra-amber, #d4a447);box-shadow:0 16px 48px #00000080;overflow:hidden}.login-header{background:var(--vajra-black, #0a0a0c);padding:28px 28px 24px;border-bottom:1px solid var(--vajra-border, #1e1e24);text-align:center}.login-logo{display:flex;flex-direction:column;align-items:center;gap:8px}.logo-text h1{margin:0;font-size:1.8rem;line-height:1;display:flex;align-items:baseline;justify-content:center;gap:8px}.logo-text .brand-vajra{font-family:Arial Black,Helvetica Neue,sans-serif;font-weight:900;color:var(--vajra-amber, #d4a447);letter-spacing:4px;text-transform:uppercase}.logo-text .brand-cast{font-family:Helvetica Neue,Arial,sans-serif;font-size:.95rem;font-weight:300;color:var(--vajra-text-dim, #6b6b78);letter-spacing:4px;text-transform:lowercase}.logo-text p{margin:10px 0 0;font-family:Helvetica Neue,Arial,sans-serif;font-size:.7rem;color:var(--vajra-text-dim, #6b6b78);font-weight:500;letter-spacing:2px;text-transform:uppercase}.login-body{padding:28px}.setup-notice{background:#d4a44714;border:1px solid rgba(212,164,71,.2);border-left:3px solid var(--vajra-amber, #d4a447);border-radius:2px;padding:14px 16px;margin-bottom:24px;text-align:center}.setup-notice strong{display:block;color:var(--vajra-amber, #d4a447);font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-bottom:6px}.setup-notice p{margin:0;color:var(--vajra-text-dim, #6b6b78);font-size:.8rem}.login-form{display:flex;flex-direction:column;gap:18px}.form-group input{padding:12px 14px;background:var(--vajra-black, #0a0a0c);border:1px solid var(--vajra-border, #1e1e24);border-radius:2px;color:var(--vajra-text, #e8e8ec);font-family:Helvetica Neue,Arial,sans-serif;font-size:.9rem;transition:all .15s}.form-group input:focus{outline:none;border-color:var(--vajra-amber, #d4a447)}.form-group input:disabled{opacity:.5;cursor:not-allowed}.form-group input::placeholder{color:var(--vajra-text-dim, #6b6b78);opacity:.6}.login-error{background:#e639461a;border:1px solid rgba(230,57,70,.3);border-left:3px solid var(--vajra-red, #e63946);border-radius:2px;padding:12px 14px;color:var(--vajra-red, #e63946);font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;text-align:center}.login-button{padding:14px 24px;background:var(--vajra-amber, #d4a447);border:none;border-radius:2px;color:var(--vajra-black, #0a0a0c);font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:8px}.login-button:hover:not(:disabled){background:#e8b84a;box-shadow:0 0 16px #d4a44766}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.5;cursor:not-allowed}.login-footer{margin-top:20px;text-align:center;color:var(--vajra-text-dim, #6b6b78);font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem}.link-button{background:none;border:none;color:var(--vajra-amber, #d4a447);font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;font-weight:600;cursor:pointer;text-decoration:none;padding:0;transition:color .15s}.link-button:hover:not(:disabled){color:#e8b84a;text-decoration:underline}.link-button:disabled{opacity:.5;cursor:not-allowed}.login-version{padding:14px;text-align:center;color:var(--vajra-text-dim, #6b6b78);font-family:Helvetica Neue,Arial,sans-serif;font-size:.65rem;text-transform:uppercase;letter-spacing:1px;border-top:1px solid var(--vajra-border, #1e1e24);background:var(--vajra-black, #0a0a0c)}@media(max-width:480px){.login-card{max-width:100%;margin:16px;border-radius:2px}.login-header{padding:24px 24px 20px}.logo-text h1{font-size:1.5rem;flex-direction:column;gap:4px}.logo-text .brand-cast{font-size:.85rem}.login-body{padding:24px}}.admin-container{min-height:100vh;background:var(--vajra-black, #0a0a0c)}.admin-header{background:var(--vajra-surface, #111114);border-bottom:2px solid var(--vajra-amber, #d4a447);padding:12px 24px}.admin-nav{display:flex;align-items:center;justify-content:space-between;max-width:1200px;margin:0 auto}.btn-back{padding:8px 16px;background:var(--vajra-black, #0a0a0c);color:var(--vajra-text-dim, #6b6b78);border:1px solid var(--vajra-border, #1e1e24);border-radius:2px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:1px;transition:all .1s}.admin-user-info{display:flex;align-items:center;gap:12px;padding:6px 14px;background:var(--vajra-black, #0a0a0c);border-radius:2px;border:1px solid var(--vajra-border, #1e1e24);color:var(--vajra-text, #e8e8ec);font-size:.8rem}.role-badge{padding:3px 10px;background:#d4a44726;border-radius:2px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.65rem;text-transform:uppercase;font-weight:600;letter-spacing:1px;color:var(--vajra-amber, #d4a447)}.btn-logout{padding:8px 16px;background:transparent;color:var(--vajra-text-dim, #6b6b78);border:1px solid var(--vajra-border, #1e1e24);border-radius:2px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:1px;transition:all .1s}.admin-body{max-width:800px;margin:32px auto;padding:0 24px}.admin-card{background:var(--vajra-surface, #111114);border:1px solid var(--vajra-border, #1e1e24);border-radius:2px;padding:28px}.card-header{margin-bottom:28px}.card-header h2{margin:0 0 8px;color:var(--vajra-amber, #d4a447);font-family:Arial Black,Helvetica Neue,sans-serif;font-size:1rem;font-weight:900;text-transform:uppercase;letter-spacing:2px}.card-header p{margin:0;color:var(--vajra-text-dim, #6b6b78);font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem}.admin-form{display:flex;flex-direction:column;gap:18px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{font-family:Helvetica Neue,Arial,sans-serif;font-size:.7rem;font-weight:600;color:var(--vajra-text-dim, #6b6b78);text-transform:uppercase;letter-spacing:1px}.form-group input,.form-group select{padding:12px 14px;background:var(--vajra-black, #0a0a0c);border:1px solid var(--vajra-border, #1e1e24);border-radius:2px;color:var(--vajra-text, #e8e8ec);font-family:Helvetica Neue,Arial,sans-serif;font-size:.9rem;transition:all .15s}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--vajra-amber, #d4a447)}.form-group input:disabled,.form-group select:disabled{opacity:.5;cursor:not-allowed}.form-group small{color:var(--vajra-text-dim, #6b6b78);font-size:.7rem;font-style:italic}.alert{padding:12px 16px;border-radius:2px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem}.alert-success{background:#2ecc711a;border:1px solid rgba(46,204,113,.3);border-left:3px solid var(--vajra-green, #2ecc71);color:var(--vajra-green, #2ecc71)}.btn-submit{padding:12px 24px;background:var(--vajra-amber, #d4a447);border:none;border-radius:2px;color:var(--vajra-black, #0a0a0c);font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all .1s;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:8px}.btn-submit:hover:not(:disabled){background:#e8b84a;box-shadow:0 0 12px #d4a44766}.btn-submit:disabled{opacity:.5;cursor:not-allowed}.loading-spinner{width:14px;height:14px;border:2px solid rgba(10,10,12,.3);border-top-color:var(--vajra-black, #0a0a0c);border-radius:50%;animation:spin .8s linear infinite}.admin-help{margin-top:28px;padding-top:20px;border-top:1px solid var(--vajra-border, #1e1e24)}.admin-help h3{margin:0 0 12px;color:var(--vajra-text-dim, #6b6b78);font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:1px}.admin-help ul{margin:0;padding-left:20px;color:var(--vajra-text-dim, #6b6b78);font-size:.8rem;line-height:1.8}.admin-help li strong{color:var(--vajra-amber, #d4a447)}.btn-primary{padding:10px 20px;background:var(--vajra-amber, #d4a447);color:var(--vajra-black, #0a0a0c);border:none;border-radius:2px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;transition:all .1s}.btn-primary:hover{background:#e8b84a}.admin-tabs{display:flex;gap:4px;margin-bottom:24px;border-bottom:1px solid var(--vajra-border, #1e1e24);padding-bottom:0}.admin-tab{padding:12px 20px;background:transparent;border:none;color:var(--vajra-text-dim, #6b6b78);cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;transition:all .1s;border-bottom:2px solid transparent;margin-bottom:-1px}.admin-tab:hover{color:var(--vajra-text, #e8e8ec)}.admin-tab.active{color:var(--vajra-amber, #d4a447);border-bottom-color:var(--vajra-amber, #d4a447)}.tab-content{animation:fadeIn .2s}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.tab-content h3{margin:0 0 20px;color:var(--vajra-text, #e8e8ec);font-family:Helvetica Neue,Arial,sans-serif;font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:1px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-header h3{margin:0}.btn-refresh{padding:8px 16px;background:var(--vajra-black, #0a0a0c);color:var(--vajra-text-dim, #6b6b78);border:1px solid var(--vajra-border, #1e1e24);border-radius:2px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;transition:all .1s}.btn-refresh:hover:not(:disabled){background:var(--vajra-surface, #111114);border-color:var(--vajra-amber, #d4a447);color:var(--vajra-text, #e8e8ec)}.btn-refresh:disabled{opacity:.5;cursor:not-allowed}.users-table{overflow-x:auto}.users-table table{width:100%;border-collapse:collapse;background:var(--vajra-black, #0a0a0c);border-radius:2px;overflow:hidden;border:1px solid var(--vajra-border, #1e1e24)}.users-table thead{background:var(--vajra-surface, #111114)}.users-table th{padding:12px 16px;text-align:left;font-family:Helvetica Neue,Arial,sans-serif;font-size:.7rem;font-weight:600;color:var(--vajra-text-dim, #6b6b78);text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid var(--vajra-border, #1e1e24)}.users-table td{padding:12px 16px;color:var(--vajra-text, #e8e8ec);font-size:.85rem;border-bottom:1px solid var(--vajra-border, #1e1e24)}.users-table tbody tr:hover{background:#d4a4470d}.users-table tbody tr:last-child td{border-bottom:none}.badge-self{display:inline-block;margin-left:8px;padding:2px 8px;background:#2ecc7126;color:var(--vajra-green, #2ecc71);font-family:Helvetica Neue,Arial,sans-serif;font-size:.6rem;font-weight:600;border-radius:2px;text-transform:uppercase;letter-spacing:.5px}.role-admin{background:#e6394626;color:var(--vajra-red, #e63946)}.role-operator{background:#d4a44726;color:var(--vajra-amber, #d4a447)}.role-viewer{background:#6b6b7826;color:var(--vajra-text-dim, #6b6b78)}.btn-delete{padding:6px 12px;background:transparent;color:var(--vajra-red, #e63946);border:1px solid rgba(230,57,70,.3);border-radius:2px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;transition:all .1s}.btn-delete:hover{background:#e639461a;border-color:var(--vajra-red, #e63946)}.loading-state,.empty-state{padding:32px;text-align:center;color:var(--vajra-text-dim, #6b6b78);font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;text-transform:uppercase;letter-spacing:1px}@media(max-width:768px){.admin-body{padding:0 16px;margin:24px auto}.admin-card{padding:20px}.admin-tabs{flex-direction:column;gap:2px}.admin-tab{text-align:left;border-bottom:none;border-left:2px solid transparent;margin-bottom:0;margin-left:0;padding-left:16px}.admin-tab.active{border-bottom-color:transparent;border-left-color:var(--vajra-amber, #d4a447)}.users-table{font-size:.8rem}.users-table th,.users-table td{padding:10px 12px}}.system-monitor-container{min-height:100vh;background:var(--vajra-black, #0a0a0c);color:var(--vajra-text, #e8e8ec)}.system-monitor-header{background:var(--vajra-surface, #111114);border-bottom:2px solid var(--vajra-amber, #d4a447);padding:12px 24px;position:sticky;top:0;z-index:100}.system-monitor-nav{display:flex;justify-content:space-between;align-items:center;gap:1rem;max-width:1400px;margin:0 auto}.system-monitor-title{flex:1;text-align:center}.system-monitor-title h1{margin:0;font-family:Arial Black,Helvetica Neue,sans-serif;font-size:1.1rem;font-weight:900;color:var(--vajra-amber, #d4a447);letter-spacing:3px;text-transform:uppercase}.last-update{display:block;font-family:Helvetica Neue,Arial,sans-serif;font-size:.65rem;color:var(--vajra-text-dim, #6b6b78);margin-top:4px;text-transform:uppercase;letter-spacing:1px}.system-monitor-user-info{display:flex;align-items:center;gap:10px;font-size:.8rem}.btn-back,.btn-logout{padding:8px 16px;border:1px solid var(--vajra-border, #1e1e24);border-radius:2px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all .1s ease}.btn-back{background:var(--vajra-black, #0a0a0c);color:var(--vajra-text-dim, #6b6b78)}.btn-back:hover{background:var(--vajra-surface, #111114);border-color:var(--vajra-amber, #d4a447);color:var(--vajra-text, #e8e8ec)}.btn-logout{background:transparent;color:var(--vajra-text-dim, #6b6b78)}.btn-logout:hover{background:#e639461a;border-color:var(--vajra-red, #e63946);color:var(--vajra-red, #e63946)}.system-monitor-body{max-width:1400px;margin:0 auto;padding:24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:16px}.metrics-card{background:#1a1a1f;border:1px solid #333340;border-radius:2px;padding:20px}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--vajra-border-light, #2a2a32)}.card-header h3{margin:0;font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--vajra-text, #e8e8ec)}.metric-badge{padding:4px 10px;border-radius:2px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.status-good{background:#2ecc7126;color:var(--vajra-green, #2ecc71)}.status-warning{background:#d4a44726;color:var(--vajra-amber, #d4a447)}.status-critical{background:#e6394626;color:var(--vajra-red, #e63946)}.progress-bar{width:100%;height:24px;background:#0e0e12;border-radius:2px;overflow:hidden;margin-bottom:12px;border:1px solid #333340;box-shadow:inset 0 2px 4px #0000004d}.progress-fill{height:100%;transition:width .3s ease;display:flex;align-items:center;justify-content:flex-end;padding-right:8px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.65rem;font-weight:600;letter-spacing:.5px}.progress-fill.status-good{background:var(--vajra-green, #2ecc71);color:var(--vajra-black, #0a0a0c)}.progress-fill.status-warning{background:var(--vajra-amber, #d4a447);color:var(--vajra-black, #0a0a0c)}.progress-fill.status-critical{background:var(--vajra-red, #e63946);color:#fff}.metric-details{display:flex;flex-direction:column;gap:6px}.metric-info p{margin:4px 0;font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;color:var(--vajra-text-dim, #6b6b78)}.metric-info strong{color:var(--vajra-text, #e8e8ec)}.info-card{grid-column:1 / -1}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px}.info-item{display:flex;gap:8px}.info-label{font-family:Helvetica Neue,Arial,sans-serif;font-weight:600;font-size:.75rem;color:var(--vajra-text-dim, #6b6b78);text-transform:uppercase;letter-spacing:.5px}.info-value{color:var(--vajra-text, #e8e8ec);font-size:.85rem}.uptime-card{grid-column:1 / -1}.uptime-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.uptime-item{display:flex;flex-direction:column;gap:4px;padding:14px;background:#0e0e12;border-radius:2px;border:1px solid #333340;border-top:2px solid var(--vajra-green, #2ecc71)}.uptime-label{font-family:Helvetica Neue,Arial,sans-serif;font-size:.7rem;color:var(--vajra-text-dim, #6b6b78);text-transform:uppercase;letter-spacing:1px}.uptime-value{font-family:Helvetica Neue,Arial,sans-serif;font-size:1.1rem;font-weight:600;color:var(--vajra-green, #2ecc71)}.network-card{grid-column:1 / -1}.network-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}.network-item{background:#0e0e12;border:1px solid #333340;border-radius:2px;padding:14px}.network-name{font-family:Helvetica Neue,Arial,sans-serif;font-weight:600;font-size:.9rem;margin-bottom:8px;color:var(--vajra-text, #e8e8ec)}.network-details p{margin:4px 0;font-size:.8rem;color:var(--vajra-text-dim, #6b6b78)}.processes-card{grid-column:1 / -1}.process-section{margin-bottom:20px}.process-section:last-child{margin-bottom:0}.process-section h4{margin:0 0 12px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;font-weight:600;color:var(--vajra-text, #e8e8ec);text-transform:uppercase;letter-spacing:1px}.process-table{overflow-x:auto;border-radius:2px;background:#0e0e12;border:1px solid #333340}.process-table table{width:100%;border-collapse:collapse}.process-table thead{background:#16161a}.process-table th{padding:12px 14px;text-align:left;font-family:Helvetica Neue,Arial,sans-serif;font-weight:600;font-size:.7rem;color:var(--vajra-text-dim, #6b6b78);text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid #333340}.process-table td{padding:10px 14px;font-size:.8rem;color:var(--vajra-text, #e8e8ec);border-bottom:1px solid var(--vajra-border-light, #2a2a32)}.process-table tbody tr:hover{background:#ffffff05}.process-command{font-family:SF Mono,Monaco,Consolas,monospace;font-size:.7rem;color:var(--vajra-text-dim, #6b6b78);max-width:800px;word-break:break-all;white-space:pre-wrap;line-height:1.4}.no-processes{text-align:center;padding:32px;color:var(--vajra-text-dim, #6b6b78);font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;text-transform:uppercase;letter-spacing:1px}.loading-container{position:fixed;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--vajra-black, #0a0a0c);z-index:9999;gap:20px}.loading-icon{font-size:3rem;animation:pulse 2s ease-in-out infinite}.loading-spinner{width:48px;height:48px;border:3px solid var(--vajra-border, #1e1e24);border-top-color:var(--vajra-amber, #d4a447);border-radius:50%;animation:spin .8s linear infinite}.loading-text{font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;color:var(--vajra-text-dim, #6b6b78);font-weight:500;text-transform:uppercase;letter-spacing:2px}.alert{padding:12px 16px;border-radius:2px;margin-bottom:16px;grid-column:1 / -1;font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem}.alert-error{background:#e639461a;border:1px solid rgba(230,57,70,.3);border-left:3px solid var(--vajra-red, #e63946);color:var(--vajra-red, #e63946)}.role-badge{padding:4px 10px;border-radius:2px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.65rem;font-weight:600;background:#d4a44726;color:var(--vajra-amber, #d4a447);text-transform:uppercase;letter-spacing:1px}@media(max-width:768px){.system-monitor-nav{flex-direction:column;gap:12px}.system-monitor-title{order:-1}.system-monitor-body{grid-template-columns:1fr;padding:16px}.info-grid,.uptime-grid,.network-list{grid-template-columns:1fr}.process-table{font-size:.7rem}.process-table th,.process-table td{padding:8px}.process-command{max-width:200px}}.per-core-usage{margin-top:16px;padding-top:16px;border-top:2px solid var(--vajra-border-light, #2a2a32)}.cores-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-top:12px}.core-item{display:flex;align-items:center;gap:10px;font-size:.8rem;padding:8px 12px;background:#0e0e12;border:1px solid #333340;border-radius:2px}.core-label{min-width:50px;font-family:Helvetica Neue,Arial,sans-serif;font-weight:600;font-size:.7rem;color:var(--vajra-text-dim, #6b6b78);text-transform:uppercase}.core-bar-container{flex:1;height:18px;background:#0a0a0c;border-radius:2px;overflow:hidden;border:1px solid #333340}.core-bar-fill{height:100%;border-radius:1px;transition:width .3s ease}.core-value{min-width:40px;text-align:right;font-family:Helvetica Neue,Arial,sans-serif;font-weight:600;font-size:.75rem;color:var(--vajra-text, #e8e8ec)}.audit-table-container{overflow-x:auto;background:var(--color-surface);border-radius:var(--border-radius-sm)}.audit-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.audit-table th,.audit-table td{padding:var(--spacing-sm) var(--spacing-md);text-align:left;border-bottom:1px solid var(--color-border);border-right:1px solid rgba(255,255,255,.05)}.audit-table th:last-child,.audit-table td:last-child{border-right:none}.audit-table th{background:var(--color-background);color:var(--color-text-secondary);font-weight:600;font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.5px;position:sticky;top:0}.audit-table tbody tr:nth-child(2n){background:#ffffff05}.audit-table tbody tr:nth-child(odd){background:#0000001a}.audit-table tbody tr:hover{background:var(--color-surface-hover)}.col-time{min-width:150px}.col-event{min-width:120px}.col-entity,.col-user{min-width:150px}.col-route{min-width:200px}.col-details{min-width:150px}.time-absolute{color:var(--color-text);font-family:monospace}.time-relative{color:var(--color-text-secondary);font-size:var(--font-size-xs)}.event-badge{display:inline-block;padding:2px 8px;border-radius:12px;color:#fff;font-size:var(--font-size-xs);font-weight:500;white-space:nowrap}.entity-type{color:var(--color-text-secondary);font-size:var(--font-size-xs);text-transform:uppercase}.entity-name{color:var(--color-text);font-weight:500}.user-email{color:var(--color-text)}.user-system{color:var(--color-text-secondary);font-style:italic}.route-move{display:flex;align-items:center;gap:var(--spacing-xs)}.route-from{color:var(--color-text-secondary)}.route-arrow{color:var(--color-primary);font-weight:700}.route-to{color:var(--color-text);font-weight:500}.details-json{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.detail-item{background:var(--color-background);padding:2px 6px;border-radius:4px;font-size:var(--font-size-xs);color:var(--color-text-secondary);font-family:monospace}.audit-table-loading,.audit-table-empty{padding:var(--spacing-xl);text-align:center;color:var(--color-text-secondary);background:var(--color-surface);border-radius:var(--border-radius-sm)}.audit-timeline{padding:var(--spacing-md)}.timeline-day{margin-bottom:var(--spacing-xl)}.timeline-date-header{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-border)}.timeline-date{font-size:var(--font-size-md);font-weight:600;color:var(--color-text);text-transform:capitalize}.timeline-count{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.timeline-events{position:relative;padding-left:30px}.timeline-events:before{content:"";position:absolute;left:12px;top:0;bottom:0;width:2px;background:var(--color-border)}.timeline-event{position:relative;display:flex;gap:var(--spacing-md);margin-bottom:var(--spacing-md);padding:var(--spacing-md);background:var(--color-surface);border-radius:var(--border-radius-sm);margin-left:var(--spacing-md)}.timeline-event:hover{background:var(--color-surface-hover)}.timeline-icon{position:absolute;left:-30px;top:16px;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:700;z-index:1}.timeline-content{flex:1;min-width:0}.timeline-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-xs)}.timeline-event-type{font-weight:600;color:var(--color-text)}.timeline-time{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.timeline-entity{display:flex;gap:var(--spacing-xs);margin-bottom:var(--spacing-xs)}.timeline-entity .entity-type{color:var(--color-text-secondary);text-transform:capitalize}.timeline-entity .entity-name{color:var(--color-text);font-weight:500}.timeline-move{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-background);border-radius:var(--border-radius-sm);font-size:var(--font-size-sm);margin-bottom:var(--spacing-xs)}.move-from{color:var(--color-text-secondary)}.move-arrow{color:var(--color-primary);font-weight:700}.move-to{color:var(--color-text);font-weight:500}.timeline-route{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--spacing-xs)}.timeline-user{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.timeline-user .user-system{font-style:italic}.audit-timeline-loading,.audit-timeline-empty{padding:var(--spacing-xl);text-align:center;color:var(--color-text-secondary);background:var(--color-surface);border-radius:var(--border-radius-sm)}.audit-filters{background:var(--color-surface);border-radius:var(--border-radius-sm);padding:var(--spacing-md)}.filter-row{display:flex;flex-wrap:wrap;gap:var(--spacing-md);align-items:flex-end}.filter-row.date-row{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-border)}.filter-group{display:flex;flex-direction:column;gap:var(--spacing-xs);min-width:150px}.filter-group label{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.filter-group select,.filter-group input{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius-sm);font-size:var(--font-size-sm);min-width:150px}.filter-group select:focus,.filter-group input:focus{outline:none;border-color:var(--color-primary)}.filter-actions{flex-direction:row;align-items:center;gap:var(--spacing-sm);min-width:auto}.date-toggle,.clear-filters{background:transparent;border:1px solid var(--color-border);color:var(--color-text);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius-sm);cursor:pointer;font-size:var(--font-size-sm);white-space:nowrap}.date-toggle:hover,.clear-filters:hover{background:var(--color-background)}.clear-filters{border-color:#f44336;color:#f44336}@media(max-width:768px){.filter-group{flex:1 1 100%;min-width:100%}.filter-actions{flex:1 1 100%;justify-content:flex-start}}.audit-history-page{min-height:100vh;background:var(--vajra-black, #0a0a0c);padding:24px;color:var(--vajra-text, #e8e8ec)}.audit-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:16px}.audit-header-left{display:flex;align-items:center;gap:16px}.audit-header-left h1{margin:0;font-family:Arial Black,Helvetica Neue,sans-serif;font-size:1.1rem;font-weight:900;color:var(--vajra-amber, #d4a447);text-transform:uppercase;letter-spacing:2px}.audit-count{color:var(--vajra-text-dim, #6b6b78);font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;text-transform:uppercase;letter-spacing:1px}.audit-header-right{display:flex;align-items:center;gap:12px}.back-button{background:var(--vajra-black, #0a0a0c);border:1px solid var(--vajra-border, #1e1e24);color:var(--vajra-text-dim, #6b6b78);padding:8px 16px;border-radius:2px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:1px;transition:all .1s}.back-button:hover{background:var(--vajra-surface, #111114);border-color:var(--vajra-amber, #d4a447);color:var(--vajra-text, #e8e8ec)}.view-toggle{display:flex;border:1px solid var(--vajra-border, #1e1e24);border-radius:2px;overflow:hidden;background:var(--vajra-black, #0a0a0c)}.view-button{background:transparent;border:none;color:var(--vajra-text-dim, #6b6b78);padding:8px 14px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px;transition:all .1s}.view-button.active{background:var(--vajra-amber, #d4a447);color:var(--vajra-black, #0a0a0c)}.view-button:hover:not(.active){background:var(--vajra-surface, #111114);color:var(--vajra-text, #e8e8ec)}.refresh-button{background:var(--vajra-amber, #d4a447);border:none;color:var(--vajra-black, #0a0a0c);padding:8px 16px;border-radius:2px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;transition:all .1s}.refresh-button:hover{background:#e8b84a;box-shadow:0 0 12px #d4a4474d}.audit-error{background:#e639461a;border:1px solid rgba(230,57,70,.3);border-left:3px solid var(--vajra-red, #e63946);color:var(--vajra-red, #e63946);padding:12px 16px;border-radius:2px;margin-bottom:24px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem}.audit-content{margin-top:24px}.audit-pagination{display:flex;justify-content:space-between;align-items:center;margin-top:24px;padding:16px;background:var(--vajra-surface, #111114);border:1px solid var(--vajra-border, #1e1e24);border-radius:2px;flex-wrap:wrap;gap:16px}.pagination-info{color:var(--vajra-text-dim, #6b6b78);font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;text-transform:uppercase;letter-spacing:.5px}.pagination-controls{display:flex;align-items:center;gap:6px}.pagination-controls button{background:var(--vajra-black, #0a0a0c);border:1px solid var(--vajra-border, #1e1e24);color:var(--vajra-text-dim, #6b6b78);padding:8px 12px;border-radius:2px;cursor:pointer;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:500;text-transform:uppercase;transition:all .1s}.pagination-controls button:hover:not(:disabled){background:var(--vajra-surface, #111114);border-color:var(--vajra-amber, #d4a447);color:var(--vajra-text, #e8e8ec)}.pagination-controls button:disabled{opacity:.4;cursor:not-allowed}.page-indicator{color:var(--vajra-text, #e8e8ec);font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;padding:0 12px}.page-size-selector{display:flex;align-items:center;gap:8px}.page-size-selector label{color:var(--vajra-text-dim, #6b6b78);font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;text-transform:uppercase;letter-spacing:.5px}.page-size-selector select{background:var(--vajra-black, #0a0a0c);border:1px solid var(--vajra-border, #1e1e24);color:var(--vajra-text, #e8e8ec);padding:8px 12px;border-radius:2px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;cursor:pointer}.page-size-selector select:focus{outline:none;border-color:var(--vajra-amber, #d4a447)}@media(max-width:768px){.audit-history-page{padding:16px}.audit-header,.audit-pagination{flex-direction:column;align-items:flex-start}}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}.diagram-container{--vajra-black: #0a0a0c;--vajra-surface: #111114;--vajra-border: #1e1e24;--vajra-border-light: #2a2a32;--vajra-text: #e8e8ec;--vajra-text-dim: #6b6b78;--vajra-amber: #d4a447;--vajra-amber-dim: rgba(212, 164, 71, .15);--vajra-red: #e63946;--vajra-green: #2ecc71;--bg-primary: var(--vajra-black);--bg-card: var(--vajra-surface);--bg-glass: rgba(255, 255, 255, .03);--bg-glass-hover: rgba(255, 255, 255, .06);--border-color: var(--vajra-border);--border-hover: var(--vajra-border-light);--text-primary: var(--vajra-text);--text-secondary: #a0a0b0;--text-muted: var(--vajra-text-dim);--status-running: var(--vajra-green);--status-running-glow: rgba(46, 204, 113, .3);--status-stopped: var(--vajra-text-dim);--status-error: var(--vajra-red);--status-error-glow: rgba(230, 57, 70, .3);--status-warning: var(--vajra-amber);--status-warning-glow: rgba(212, 164, 71, .3);--accent-input: var(--vajra-amber);--accent-input-glow: rgba(212, 164, 71, .2);--accent-route: var(--vajra-amber);--accent-route-glow: rgba(212, 164, 71, .2);--accent-output: #06b6d4;--accent-output-glow: rgba(6, 182, 212, .2);--node-radius: 2px;--node-padding: 16px}.diagram-container{width:100%;height:100%;background:var(--bg-primary)}.diagram-container .react-flow__background{background:var(--bg-primary)}.diagram-container .react-flow__node{background:transparent;border:none;border-radius:0;padding:0;box-shadow:none}.diagram-container .react-flow__node.selected,.diagram-container .react-flow__node:focus,.diagram-container .react-flow__node:focus-visible{outline:none;box-shadow:none}.diagram-container .react-flow__controls{background:var(--bg-card);border:1px solid var(--border-color);border-radius:2px;box-shadow:0 4px 20px #0006}.diagram-container .react-flow__controls-button{background:var(--bg-card);border-bottom:1px solid var(--border-color);fill:var(--text-secondary)}.diagram-container .react-flow__controls-button:hover{background:var(--bg-glass-hover);fill:var(--vajra-amber)}.diagram-container .react-flow__minimap{background:var(--bg-card);border:1px solid var(--border-color);border-radius:2px}.cluster-node{background:#ffffff05;border:1px solid var(--vajra-border);border-radius:2px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none}.cluster-node__header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;pointer-events:auto;cursor:grab;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--vajra-border)}.cluster-node__header:active{cursor:grabbing}.cluster-node__title{display:flex;align-items:center;gap:8px}.cluster-node__icon{font-size:16px}.cluster-node__name{font-family:Helvetica Neue,Arial,sans-serif;font-size:.85rem;font-weight:600;color:var(--vajra-text);text-transform:uppercase;letter-spacing:1px}.cluster-node__status{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:2px;background:var(--vajra-black);border:1px solid var(--vajra-border)}.cluster-node__status-dot{width:6px;height:6px;border-radius:50%}.cluster-node__status--running .cluster-node__status-dot{background:var(--status-running);box-shadow:0 0 6px #2ecc7180}.cluster-node__status--stopped .cluster-node__status-dot{background:var(--status-stopped)}.cluster-node__status--error .cluster-node__status-dot{background:var(--status-error);box-shadow:0 0 6px #e6394680}.cluster-node__status-label{font-family:Helvetica Neue,Arial,sans-serif;font-size:.65rem;font-weight:600;color:var(--vajra-text-dim);text-transform:uppercase;letter-spacing:.5px}.cluster-node__divider{border-top:1px solid var(--vajra-border);margin:0 16px}.cluster-node__actions{display:flex;align-items:center;gap:4px;margin-left:auto;margin-right:12px}.cluster-node__action{display:flex;align-items:center;justify-content:center;padding:4px 8px;border:1px solid var(--vajra-border);border-radius:2px;background:var(--vajra-black);color:var(--vajra-text-dim);font-family:Helvetica Neue,Arial,sans-serif;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .1s ease}.cluster-node__action:hover{background:var(--vajra-surface);border-color:var(--vajra-amber);color:var(--vajra-text)}.cluster-node__action--start:hover{background:#2ecc7126;border-color:var(--vajra-green);color:var(--vajra-green)}.cluster-node__action--stop:hover{background:#e6394626;border-color:var(--vajra-red);color:var(--vajra-red)}.cluster-node__action--add:hover{background:var(--vajra-amber-dim);border-color:var(--vajra-amber);color:var(--vajra-amber)}.cluster-node__failover-badge{display:flex;align-items:center;padding:4px 8px;border:none;border-radius:2px;background:var(--vajra-amber);color:var(--vajra-black);font-family:Helvetica Neue,Arial,sans-serif;font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .1s ease;pointer-events:auto}.cluster-node__failover-badge:hover{background:#e8b84a;box-shadow:0 0 12px #d4a44766}.cluster-node__failover-badge:disabled{opacity:.6;cursor:not-allowed}.cluster-node__failover-badge--disabled{background:var(--vajra-border);color:var(--vajra-text-dim)}.cluster-node__failover-badge--disabled:hover{background:var(--vajra-border-light)}.diagram-node{background:var(--bg-card);border:1px solid var(--border-color);border-radius:2px;padding:var(--node-padding);min-width:200px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:all .15s ease;cursor:pointer}.diagram-node:hover{background:var(--bg-glass-hover);border-color:var(--vajra-amber);box-shadow:0 4px 16px #0006}.diagram-node--selected,.react-flow__node.selected .diagram-node{border-color:var(--vajra-amber);box-shadow:0 0 0 2px var(--vajra-amber-dim)}.diagram-node--input{border-left:3px solid var(--vajra-amber)}.diagram-node--input:hover{box-shadow:0 4px 16px #0006,0 0 12px var(--accent-input-glow)}.diagram-node--route{border-left:3px solid var(--vajra-amber);min-width:180px}.diagram-node--route:hover{box-shadow:0 4px 16px #0006,0 0 12px var(--accent-route-glow)}.diagram-node--output{border-left:3px solid var(--accent-output)}.diagram-node--output:hover{box-shadow:0 4px 16px #0006,0 0 12px var(--accent-output-glow)}.diagram-node__header{display:flex;align-items:center;gap:10px;margin-bottom:8px}.diagram-node__status{width:8px;height:8px;border-radius:50%;flex-shrink:0}.diagram-node__status--running{background:var(--status-running);box-shadow:0 0 8px var(--status-running-glow);animation:pulse 2s ease-in-out infinite}.diagram-node__status--stopped{background:var(--status-stopped)}.diagram-node__status--error{background:var(--status-error);box-shadow:0 0 8px var(--status-error-glow);animation:pulse 1s ease-in-out infinite}.diagram-node__status--warning{background:var(--status-warning);box-shadow:0 0 8px var(--status-warning-glow)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.diagram-node__title{font-family:Helvetica Neue,Arial,sans-serif;font-size:.85rem;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.diagram-node__type-badge{font-family:Helvetica Neue,Arial,sans-serif;font-size:.6rem;font-weight:600;padding:2px 6px;border-radius:2px;background:var(--vajra-amber-dim);color:var(--vajra-amber);text-transform:uppercase;letter-spacing:.5px}.diagram-node__details{display:flex;flex-direction:column;gap:6px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border-color)}.diagram-node__detail-row{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}.diagram-node__detail-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:.65rem}.diagram-node__detail-value{font-family:Helvetica Neue,Arial,sans-serif;color:var(--text-secondary)}.diagram-node__detail-value--highlight{color:var(--status-running)}.diagram-node__stats{display:flex;gap:12px;margin-top:8px}.diagram-node__stat{display:flex;flex-direction:column;align-items:center;gap:2px}.diagram-node__stat-value{font-family:Helvetica Neue,Arial,sans-serif;font-size:.8rem;font-weight:600;color:var(--text-primary)}.diagram-node__stat-label{font-size:.55rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.diagram-node__io-count{display:flex;gap:16px;margin-top:12px}.diagram-node__io-item{display:flex;align-items:center;gap:6px;font-size:.75rem;color:var(--text-secondary)}.diagram-node__io-icon{font-size:14px}.diagram-node--compact{padding:10px 14px;min-width:140px}.diagram-node--compact .diagram-node__header{margin-bottom:0}.diagram-node--compact .diagram-node__details,.diagram-node--compact .diagram-node__stats,.diagram-node--compact .diagram-node__io-count{display:none}.diagram-node__actions{display:flex;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border-color);justify-content:flex-end}.diagram-node__action{background:var(--vajra-black);border:1px solid var(--border-color);border-radius:2px;padding:6px 10px;font-size:14px;cursor:pointer;transition:all .1s ease;display:flex;align-items:center;justify-content:center;color:var(--vajra-text-dim)}.diagram-node__action:hover{background:var(--vajra-surface);border-color:var(--vajra-amber);color:var(--vajra-text)}.diagram-node__action--activate:hover{border-color:var(--vajra-amber);box-shadow:0 0 8px #d4a4474d;color:var(--vajra-amber)}.diagram-node__action--active-star{color:var(--vajra-amber);cursor:default;font-size:1.1em;background:transparent;border:none;padding:2px 4px}.diagram-node__action--copy{font-size:12px}.diagram-node__action--copy:hover{border-color:var(--accent-output);box-shadow:0 0 8px var(--accent-output-glow)}.diagram-node__action--copied{background:#2ecc7126;border-color:var(--status-running);color:var(--status-running)}.diagram-node__action--edit:hover{border-color:var(--vajra-amber);box-shadow:0 0 8px var(--vajra-amber-dim)}.diagram-node__action--delete:hover{border-color:var(--status-error);box-shadow:0 0 8px var(--status-error-glow);color:var(--vajra-red)}.diagram-node__toggle{position:relative;display:inline-flex;align-items:center;justify-content:center;width:48px;height:32px;cursor:pointer;background:var(--vajra-black);border:1px solid var(--border-color);border-radius:2px;padding:6px;transition:all .1s ease}.diagram-node__toggle:hover{background:var(--vajra-surface);border-color:var(--border-hover)}.diagram-node__toggle input{opacity:0;width:0;height:0}.diagram-node__toggle-slider{position:relative;width:32px;height:16px;background:var(--vajra-black);border:1px solid var(--border-color);border-radius:2px;transition:all .1s ease}.diagram-node__toggle-slider:before{position:absolute;content:"";height:12px;width:12px;left:1px;top:1px;background:var(--text-muted);border-radius:1px;transition:all .1s ease}.diagram-node__toggle input:checked+.diagram-node__toggle-slider{background:#2ecc7133;border-color:var(--status-running)}.diagram-node__toggle input:checked+.diagram-node__toggle-slider:before{transform:translate(15px);background:var(--status-running)}.diagram-node__toggle:hover .diagram-node__toggle-slider{border-color:var(--vajra-amber)}.diagram-node__toggle input:checked:hover+.diagram-node__toggle-slider{box-shadow:0 0 8px var(--status-running-glow)}.diagram-node--compact .diagram-node__actions{display:none}.diagram-node--compact:hover .diagram-node__actions{display:flex;margin-top:8px;padding-top:8px}.diagram-node .react-flow__handle{width:10px;height:10px;background:var(--bg-card);border:2px solid var(--border-color);transition:all .15s ease}.diagram-node--input .react-flow__handle-right,.diagram-node--route .react-flow__handle-left{border-color:var(--vajra-amber)}.diagram-node--route .react-flow__handle-right,.diagram-node--output .react-flow__handle-left{border-color:var(--accent-output)}.animated-edge{stroke-width:2}.animated-edge--active{animation:flowAnimation 1.5s linear infinite}@keyframes flowAnimation{0%{stroke-dashoffset:24}to{stroke-dashoffset:0}}.detail-panel{position:absolute;top:0;right:0;width:360px;height:100%;background:var(--vajra-surface);border-left:1px solid var(--vajra-border);z-index:100;transform:translate(100%);transition:transform .2s ease;overflow-y:auto}.detail-panel--open{transform:translate(0)}.detail-panel__header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:2px solid var(--vajra-amber);background:var(--vajra-black)}.detail-panel__title{font-family:Arial Black,Helvetica Neue,sans-serif;font-size:.9rem;font-weight:900;color:var(--vajra-amber);text-transform:uppercase;letter-spacing:2px}.detail-panel__close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:24px;line-height:1;padding:4px;transition:color .1s}.detail-panel__close:hover{color:var(--vajra-red)}.detail-panel__content{padding:20px}.detail-panel__section{margin-bottom:24px}.detail-panel__section-title{font-family:Helvetica Neue,Arial,sans-serif;font-size:.7rem;font-weight:600;color:var(--vajra-text-dim);text-transform:uppercase;letter-spacing:1px;margin-bottom:12px}.detail-panel__grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.detail-panel__stat{background:var(--vajra-black);border:1px solid var(--vajra-border);border-radius:2px;padding:12px}.detail-panel__stat-value{font-family:Helvetica Neue,Arial,sans-serif;font-size:1.1rem;font-weight:600;color:var(--vajra-text)}.detail-panel__stat-label{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-top:4px}.detail-panel__config-item{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--vajra-border)}.detail-panel__config-item:last-child{border-bottom:none}.detail-panel__config-label{color:var(--text-muted);font-size:.8rem}.detail-panel__config-value{font-family:Helvetica Neue,Arial,sans-serif;color:var(--vajra-text);font-size:.8rem}.view-toggle{display:flex;background:var(--vajra-black);border:1px solid var(--vajra-border);border-radius:2px;padding:2px;gap:2px}.view-toggle__button{background:none;border:none;padding:6px 14px;border-radius:1px;color:var(--vajra-text-dim);font-family:Helvetica Neue,Arial,sans-serif;font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .1s}.view-toggle__button:hover{color:var(--vajra-text);background:var(--vajra-border)}.view-toggle__button--active{background:var(--vajra-amber);color:var(--vajra-black)}.diagram-toolbar{position:absolute;top:20px;left:50%;transform:translate(-50%);z-index:10;display:flex;gap:12px;align-items:center}.diagram-toolbar__add-route,.diagram-toolbar__reorganize{padding:8px 14px;background:var(--vajra-black);border:1px solid var(--vajra-border);border-radius:2px;color:var(--vajra-text-dim);font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all .1s ease}.diagram-toolbar__add-route:hover,.diagram-toolbar__reorganize:hover{background:var(--vajra-surface);border-color:var(--vajra-amber);color:var(--vajra-text)}.diagram-toolbar__add-route:disabled{opacity:.5;cursor:not-allowed}.diagram-toolbar__reorganize-menu{position:relative}.diagram-toolbar__reorganize-dropdown{position:absolute;top:100%;left:0;margin-top:4px;background:var(--vajra-surface);border:1px solid var(--vajra-border);border-radius:2px;box-shadow:0 4px 12px #00000080;min-width:150px;z-index:100}.diagram-toolbar__reorganize-option{display:block;width:100%;padding:10px 14px;background:transparent;border:none;color:var(--vajra-text-dim);font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;text-align:left;cursor:pointer;transition:all .1s}.diagram-toolbar__reorganize-option:hover{background:var(--vajra-amber-dim);color:var(--vajra-amber)}.diagram-toolbar__reorganize-option:first-child{border-radius:2px 2px 0 0}.diagram-toolbar__reorganize-option:last-child{border-radius:0 0 2px 2px}.diagram-page{display:flex;flex-direction:column;height:100vh;background:var(--vajra-black);color:var(--vajra-text);font-family:Helvetica Neue,Arial,sans-serif}.diagram-page__header{display:flex;align-items:center;gap:16px;padding:12px 24px;background:var(--vajra-surface);border-bottom:2px solid var(--vajra-amber)}.diagram-page__controls{display:flex;align-items:center;gap:12px;margin-left:auto}.diagram-page__btn{padding:8px 14px;background:var(--vajra-black);border:1px solid var(--vajra-border);border-radius:2px;color:var(--vajra-text-dim);font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all .1s ease;white-space:nowrap}.diagram-page__btn:hover{background:var(--vajra-surface);border-color:var(--vajra-amber);color:var(--vajra-text)}.diagram-page__btn:disabled{opacity:.5;cursor:not-allowed}.diagram-page__btn--add{background:var(--vajra-amber);border-color:var(--vajra-amber);color:var(--vajra-black);font-weight:700}.diagram-page__btn--add:hover{background:#e8b84a;box-shadow:0 0 12px #d4a44766}.diagram-page__reorganize-menu{position:relative}.diagram-page__reorganize-dropdown{position:absolute;top:100%;right:0;margin-top:4px;background:var(--vajra-surface);border:1px solid var(--vajra-border);border-radius:2px;box-shadow:0 4px 12px #00000080;min-width:160px;z-index:100}.diagram-page__reorganize-dropdown button{display:block;width:100%;padding:10px 14px;background:transparent;border:none;color:var(--vajra-text-dim);font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;text-align:left;cursor:pointer;transition:all .1s}.diagram-page__reorganize-dropdown button:hover{background:var(--vajra-amber-dim);color:var(--vajra-amber)}.diagram-page__reorganize-dropdown button:first-child{border-radius:2px 2px 0 0}.diagram-page__reorganize-dropdown button:last-child{border-radius:0 0 2px 2px}.diagram-page__back{color:var(--vajra-text-dim);text-decoration:none;font-size:.8rem;font-weight:500;text-transform:uppercase;letter-spacing:1px;transition:color .1s}.diagram-page__back:hover{color:var(--vajra-amber)}.diagram-page__title{font-family:Arial Black,Helvetica Neue,sans-serif;font-size:1rem;font-weight:900;margin:0;flex:1;color:var(--vajra-amber);text-transform:uppercase;letter-spacing:2px}.diagram-page__count{font-family:Helvetica Neue,Arial,sans-serif;font-size:.7rem;color:var(--vajra-text-dim);background:var(--vajra-black);border:1px solid var(--vajra-border);padding:4px 12px;border-radius:2px;flex-shrink:0;text-transform:uppercase;letter-spacing:.5px}.diagram-page__content{flex:1;position:relative;overflow:hidden}.diagram-page--loading,.diagram-page--error,.diagram-page--empty{display:flex;align-items:center;justify-content:center}.diagram-page__loader{display:flex;flex-direction:column;align-items:center;gap:16px;color:var(--vajra-text-dim)}.diagram-page__spinner{width:40px;height:40px;border:3px solid var(--vajra-border);border-top-color:var(--vajra-amber);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.diagram-page__error,.diagram-page__empty{text-align:center;padding:40px}.diagram-page__error h2,.diagram-page__empty h2{font-family:Arial Black,Helvetica Neue,sans-serif;font-size:1rem;font-weight:900;color:var(--vajra-amber);text-transform:uppercase;letter-spacing:2px;margin-bottom:8px}.diagram-page__error p,.diagram-page__empty p{color:var(--vajra-text-dim);margin-bottom:24px;font-size:.85rem}.diagram-page__link{display:inline-block;padding:10px 20px;background:var(--vajra-amber);color:var(--vajra-black);text-decoration:none;border-radius:2px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;transition:all .1s}.diagram-page__link:hover{background:#e8b84a;box-shadow:0 0 12px #d4a44766}.diagram-node__active-badge{color:var(--vajra-amber);font-size:14px;text-shadow:0 0 8px rgba(212,164,71,.5);margin-right:4px}.diagram-node--active{border-color:#d4a44780;box-shadow:0 0 12px #d4a44726}.diagram-node--active:hover{box-shadow:0 4px 16px #0006,0 0 20px #d4a44740}.diagram-node--input:not(.diagram-node--active){opacity:.85}.diagram-node__pu-badge{font-family:Helvetica Neue,Arial,sans-serif;font-size:.55rem;font-weight:700;padding:2px 5px;border-radius:2px;background:var(--vajra-amber);color:var(--vajra-black);text-transform:uppercase;letter-spacing:.3px}.cluster-node--drop-target{border:2px dashed var(--vajra-amber)!important;background:var(--vajra-amber-dim)!important;box-shadow:0 0 20px #d4a4474d;transition:all .15s ease}.diagram-copy-indicator{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--vajra-amber);color:var(--vajra-black);padding:8px 16px;border-radius:2px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;box-shadow:0 4px 12px #d4a44766;z-index:1000;pointer-events:none}.transfer-modal-overlay{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:1000}.transfer-modal{background:var(--vajra-surface);border:1px solid var(--vajra-border);border-top:2px solid var(--vajra-amber);border-radius:2px;padding:24px;width:400px;max-width:90vw;box-shadow:0 16px 48px #0009}.transfer-modal__header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.transfer-modal__icon{font-size:24px;color:var(--vajra-amber)}.transfer-modal__title{font-family:Helvetica Neue,Arial,sans-serif;font-size:.9rem;font-weight:600;color:var(--vajra-text);text-transform:uppercase;letter-spacing:1px;margin:0}.transfer-modal__content{color:var(--vajra-text-dim);font-size:.85rem;line-height:1.6;margin-bottom:24px}.transfer-modal__content p{margin:0 0 8px}.transfer-modal__content strong{color:var(--vajra-text)}.transfer-modal__actions{display:flex;gap:12px;justify-content:flex-end}.transfer-modal__button{padding:10px 20px;border-radius:2px;font-family:Helvetica Neue,Arial,sans-serif;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all .1s;border:1px solid transparent}.transfer-modal__button--cancel{background:var(--vajra-black);border-color:var(--vajra-border);color:var(--vajra-text-dim)}.transfer-modal__button--cancel:hover{background:var(--vajra-surface);border-color:var(--vajra-amber);color:var(--vajra-text)}.transfer-modal__button--confirm{background:var(--vajra-amber);color:var(--vajra-black)}.transfer-modal__button--confirm:hover{background:#e8b84a;box-shadow:0 0 12px #d4a44766}.transfer-modal__button--delete{background:var(--vajra-red);color:#fff}.transfer-modal__button--delete:hover{background:#ff4757;box-shadow:0 0 12px #e6394666}.transfer-modal__button:disabled{opacity:.6;cursor:not-allowed}.app{width:100%;min-height:100vh}
