.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}.process-monitor{margin-top:8px;padding:10px;background:#1a1a1a;border-radius:4px;border:1px solid #333}.monitor-header{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;font-weight:600;color:#4caf50;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #333}.status-indicator{padding:2px 8px;border-radius:3px;font-size:.65rem;text-transform:uppercase;font-weight:600}.no-stats{text-align:center;color:#666;padding:20px;font-size:.8rem}.stats-section{margin-bottom:10px}.stats-section h4{margin:0 0 6px;color:#aaa;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:6px;margin-bottom:8px}.stat-box{background:#2a2a2a;border:1px solid #333;border-radius:3px;padding:6px 8px;transition:all .2s}.stat-box:hover{border-color:#4caf50;transform:translateY(-1px);box-shadow:0 2px 4px #4caf501a}.stat-box.highlight{background:linear-gradient(135deg,#2a2a2a,#1a3a1a);border-color:#4caf50}.stat-label{color:#888;font-size:.65rem;text-transform:uppercase;letter-spacing:.3px;margin-bottom:3px;font-weight:500}.stat-value{color:#fff;font-size:.8rem;font-weight:600;font-family:Courier New,monospace}.stat-value.large{font-size:1.1rem;color:#4caf50}.stat-value.small{font-size:.65rem;word-break:break-all}.stat-value.status-running{color:#4caf50}.stat-value.status-stopped{color:#999}.stat-value.status-failed,.stat-value.status-error{color:#f44336}.stat-value.status-starting,.stat-value.status-connecting{color:#ff9800}.stat-value.status-completed{color:#2196f3}.stat-value.status-disconnected{color:#666}.stat-value.status-ok{color:#28a745}.command-display{background:#0a0a0a;border:1px solid #333;border-radius:3px;padding:6px 8px;margin-top:6px}.command-label{color:#888;font-size:.65rem;text-transform:uppercase;margin-bottom:4px;font-weight:600}.command-text{color:#4caf50;font-size:.7rem;font-family:Courier New,monospace;display:block;white-space:pre-wrap;word-break:break-all;line-height:1.4}.errors-section{background:#2a1a1a;border:1px solid #f44336;border-radius:3px;padding:6px 8px;margin-top:6px}.errors-header{display:flex;justify-content:space-between;align-items:center;color:#f44336;font-size:.7rem;font-weight:600;margin-bottom:6px;text-transform:uppercase}.error-item{background:#1a0a0a;border-left:2px solid #f44336;padding:4px 6px;margin-bottom:4px;border-radius:2px}.error-item:last-child{margin-bottom:0}.error-time{color:#ff9800;font-size:.65rem;font-family:Courier New,monospace;margin-bottom:2px}.error-text{color:#f88;font-size:.7rem;font-family:Courier New,monospace;white-space:pre-wrap;line-height:1.3}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.status-running,.status-connecting{animation:pulse 2s ease-in-out infinite}.process-monitor.compact .stats-section{margin-bottom:6px}.process-monitor.compact .stats-section h4{padding:6px 10px;background:#2a2a2a;border:1px solid #333;border-radius:3px;margin-bottom:6px;transition:background .2s}.process-monitor.compact .stats-section h4:hover{background:#333}.process-monitor.compact .stats-grid{grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:4px;margin-bottom:6px}.process-monitor.compact .stat-box{padding:4px 6px}.process-monitor.compact .stat-label{font-size:.6rem;margin-bottom:2px}.process-monitor.compact .stat-value{font-size:.7rem}.process-monitor.compact .stat-value.large{font-size:.9rem}@media(max-width:768px){.stats-grid{grid-template-columns:repeat(auto-fit,minmax(90px,1fr))}.stat-value.large{font-size:1rem}}.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}.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: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}}:root{--col-checkbox: 32px;--col-expand: 40px;--col-status: 8px;--col-name: minmax(200px, 350px);--col-mode: 110px;--col-outputs: minmax(180px, 300px);--col-uptime: 90px;--col-bitrate: 90px;--col-autostart: 70px;--col-codec: 100px;--col-actions: 140px;--route-gap: 8px}.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(--col-checkbox) var(--col-expand) var(--col-status) var(--col-name) var(--col-mode) var(--col-outputs) var(--col-uptime) var(--col-bitrate) var(--col-autostart) var(--col-codec) var(--col-actions);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:.9em}.route-table-body{max-height:calc(100vh - 250px);overflow-y:auto}.route-table-row{display:grid;grid-template-columns:var(--col-checkbox) var(--col-expand) var(--col-status) var(--col-name) var(--col-mode) var(--col-outputs) var(--col-uptime) var(--col-bitrate) var(--col-autostart) var(--col-codec) var(--col-actions);gap:var(--route-gap);padding:8px 12px;border-bottom:1px solid #2a2a2a;align-items:center;transition:background .2s;font-size:.85rem}.route-table-row:hover{background:#222}.route-table-row.output-row{background:#1a1a1a;padding-left:28px}.route-table-row.output-row:hover{background:#1f1f1f}.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}.status-bar{width:6px;height:24px;border-radius:2px;transition:background-color .3s}.name-cell{font-weight:600;color:#fff}.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}.actions-cell{display:flex;justify-content:flex-end}.route-actions{display:flex;gap:6px;align-items:center}.action-btn{background:transparent;border:1px solid #444;color:#888;cursor:pointer;padding:0;border-radius:3px;font-size:.9rem;transition:all .2s;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;min-width:28px;box-sizing:border-box}.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;padding:2px 4px;border-radius:2px;background:#0000004d}.no-routes-table{padding:40px;text-align:center;color:#666;font-size:.9rem}@media(max-width:1200px){:root{--col-name: minmax(120px, 220px);--col-mode: 100px;--col-outputs: minmax(150px, 250px);--col-uptime: 90px;--col-bitrate: 90px;--col-actions: 120px}.route-table-header,.route-table-row{grid-template-columns:var(--col-checkbox) var(--col-expand) var(--col-status) var(--col-name) var(--col-mode) var(--col-outputs) var(--col-uptime) var(--col-bitrate) var(--col-actions);font-size:.8rem}.route-table-header .codec-cell,.route-table-row .codec-cell{display:none}}@media(max-width:900px){:root{--col-name: minmax(100px, 180px);--col-mode: 80px;--col-outputs: minmax(120px, 200px);--col-actions: 100px}.route-table-header,.route-table-row{grid-template-columns:var(--col-checkbox) var(--col-expand) var(--col-status) var(--col-name) var(--col-outputs) var(--col-actions);font-size:.8rem}.route-table-header .mode-cell,.route-table-row .mode-cell,.route-table-header .uptime-cell,.route-table-row .uptime-cell,.route-table-header .bitrate-cell,.route-table-row .bitrate-cell,.route-table-header .codec-cell,.route-table-row .codec-cell{display:none}}@media(max-width:768px){:root{--col-checkbox: 32px;--col-expand: 32px;--col-status: 6px;--col-name: minmax(80px, 180px);--col-mode: 70px;--col-actions: 100px;--route-gap: 6px}.route-table-header,.route-table-row{grid-template-columns:var(--col-checkbox) var(--col-expand) var(--col-status) var(--col-name) var(--col-mode) var(--col-actions);font-size:.75rem;padding:8px}.route-table-header .uptime-cell,.route-table-row .uptime-cell,.route-table-header .bitrate-cell,.route-table-row .bitrate-cell,.route-table-header .codec-cell,.route-table-row .codec-cell{display:none}.mode-cell{font-size:.7rem}.bulk-actions-toolbar{flex-direction:column;align-items:flex-start;gap:8px}.bulk-actions-buttons{width:100%;justify-content:space-between}.bulk-btn{flex:1;padding:6px 8px;font-size:.75rem}.route-actions{gap:4px}.action-btn{width:24px;height:24px;min-width:24px;padding:0;font-size:.85rem}}@media(max-width:480px){:root{--col-checkbox: 28px;--col-expand: 28px;--col-status: 6px;--col-name: minmax(60px, 150px);--col-actions: 90px;--route-gap: 4px}.route-table-header,.route-table-row{grid-template-columns:var(--col-checkbox) var(--col-expand) var(--col-status) var(--col-name) var(--col-actions);padding:6px}.route-table-header .mode-cell,.route-table-row .mode-cell,.route-table-header .outputs-cell,.route-table-row .outputs-cell,.route-table-header .uptime-cell,.route-table-row .uptime-cell,.route-table-header .bitrate-cell,.route-table-row .bitrate-cell,.route-table-header .codec-cell,.route-table-row .codec-cell{display:none}.expand-btn{padding:2px 4px;font-size:.75rem}.action-btn{width:20px;height:20px;min-width:20px;padding:0;font-size:.8rem}.route-actions{gap:3px}.status-bar{width:5px;height:20px}}.container{max-width:1200px;margin:0 auto;padding:20px}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.header h1{margin:0;color:#fff}.header-actions{display:flex;gap:12px;align-items:center}.add-route-btn{background:#64748b;color:#fff;border:none;padding:10px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.add-route-btn:hover:not(:disabled){background:#475569}.add-route-btn:disabled{background:#ccc;cursor:not-allowed;opacity:.6}.route-list{display:flex;flex-direction:column;gap:20px;min-height:400px}.no-routes{text-align:center;padding:40px;color:#888;font-size:16px}.loading,.error{text-align:center;padding:40px;font-size:16px}.error{color:#f44336}.footer{margin-top:30px;text-align:center}.ws-status{color:#999;font-size:14px}.ws-status-connected{color:#10b981;font-weight:700}.ws-status-connecting{color:#ff9800;font-weight:700}.ws-status-disconnected{color:#666;font-weight:700}.ws-status-error{color:#f44336;font-weight:700}@media(max-width:768px){.container{padding:12px}.header{flex-direction:column;align-items:flex-start;gap:16px}.header h1{font-size:24px}.header-actions{width:100%;flex-direction:column}.add-route-btn{width:100%}}@media(max-width:480px){.container{padding:8px}.header h1{font-size:20px}}.modal-backdrop{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-container{background:#2a2a2a;border:1px solid #444;border-radius:12px;box-shadow:0 20px 60px #00000080;max-width:900px;width:90%;max-height:85vh;display:flex;flex-direction:column;animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{padding:1.5rem 2rem;border-bottom:1px solid #444;display:flex;justify-content:space-between;align-items:center}.modal-header h3{margin:0;color:#64748b;font-size:1.5rem;font-weight:600}.close-button{background:none;border:none;font-size:2rem;color:#888;cursor:pointer;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s;line-height:1}.close-button:hover{background:#3a3a3a;color:#fff}.modal-body{padding:1.5rem 2rem;overflow-y:auto;flex:1}.results-section{margin-bottom:2rem}.results-section:last-child{margin-bottom:0}.results-section h4{margin:0 0 1rem;color:#aaa;font-size:1.1rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.table-container{overflow-x:auto;border:1px solid #444;border-radius:8px}.results-table{width:100%;border-collapse:collapse;font-size:.9rem}.results-table thead{background:#1a1a1a}.results-table th{padding:.75rem 1rem;text-align:left;font-weight:600;color:#64748b;border-bottom:2px solid #444;font-size:11px;text-transform:uppercase;letter-spacing:.5px}.results-table td{padding:.75rem 1rem;border-bottom:1px solid #333;color:#fff}.results-table tbody tr:hover{background:#333}.results-table tbody tr:last-child td{border-bottom:none}.pid-cell{font-family:Courier New,monospace;font-weight:600;color:#2196f3}.codec-cell{font-family:Courier New,monospace;font-weight:600;color:#ff9800}.channels-cell{font-weight:600;color:#64748b}.layout-badge{display:inline-block;padding:.25rem .5rem;background:#1a3a5a;color:#2196f3;border-radius:4px;font-size:.8rem;font-weight:600;border:1px solid #2196f3}.layout-badge-empty{color:#666}.lang-badge{display:inline-block;padding:.25rem .5rem;background:#3a2a1a;color:#ff9800;border-radius:4px;font-size:.8rem;font-weight:600;text-transform:uppercase;border:1px solid #ff9800}.lang-badge-empty{color:#666}.resolution-cell{font-family:Courier New,monospace;color:#9c27b0}.fps-cell{color:#aaa}.no-results{padding:3rem;text-align:center;color:#888}.no-results-icon{font-size:3rem;display:block;margin-bottom:1rem}.no-results p{margin:0;font-size:1.1rem}.info-section{margin-top:1.5rem;padding:1rem;background:#1a1a1a;border:1px solid #333;border-radius:8px;display:flex;gap:2rem;flex-wrap:wrap}.info-label{font-weight:600;color:#888}.info-value{color:#64748b;font-family:Courier New,monospace}.modal-footer{padding:1.5rem 2rem;border-top:1px solid #444;display:flex;justify-content:flex-end;gap:1rem}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;border:none;border-radius:8px;font-weight:600;font-size:.9rem;cursor:pointer;transition:all .2s}.btn-primary{background:#64748b;color:#fff}.btn-primary:hover{background:#475569;transform:translateY(-1px);box-shadow:0 4px 12px #4caf5066}.btn-secondary{background:#666;color:#fff}.btn-secondary:hover{background:#777}._editContainer_c05hf_8{max-width:min(1800px,95vw);margin:0 auto;padding:var(--spacing-xl) var(--spacing-lg)}._header_c05hf_16{margin-bottom:var(--spacing-xl)}._header_c05hf_16 h2{margin:0 0 var(--spacing-sm) 0;font-size:var(--font-2xl);color:#fffffff2}._breadcrumb_c05hf_26{display:flex;align-items:center;gap:var(--spacing-xs);font-size:var(--font-sm);color:#fff9}._breadcrumb_c05hf_26 a{color:var(--color-primary);text-decoration:none}._breadcrumb_c05hf_26 a:hover{text-decoration:underline}._stickyHeader_c05hf_45{position:sticky;top:0;z-index:var(--z-sticky);background:var(--bg-base);border-bottom:1px solid var(--border-color);padding:var(--spacing-md) var(--spacing-lg);margin:0 calc(-1 * var(--spacing-lg)) var(--spacing-xl);display:flex;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1a1a1ae6}._stickyHeader_c05hf_45._sticky_c05hf_45{box-shadow:var(--shadow-md)}._routeName_c05hf_64{font-size:var(--font-lg);font-weight:600;color:#ffffffe6}._dirtyIndicator_c05hf_70{margin-left:var(--spacing-sm);font-size:var(--font-xs);color:var(--color-warning)}._headerActions_c05hf_76{display:flex;gap:var(--spacing-sm)}._routeEditorGrid_c05hf_83{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:auto;gap:var(--card-gap);align-items:start}._overviewCard_c05hf_94{grid-column:1 / 7;grid-row:1;min-height:240px}._signalFlowCard_c05hf_100{grid-column:7 / 13;grid-row:1;min-height:240px}._ingestCard_c05hf_107{grid-column:1 / 7;min-height:340px}._outputsCard_c05hf_112{grid-column:7 / 13;grid-row:2 / 999;min-height:340px}._videoCard_c05hf_119,._audioCard_c05hf_124{grid-column:1 / 7;min-height:400px}._card_c05hf_131{background:var(--bg-card);border:var(--card-border);border-radius:var(--radius-lg);padding:var(--card-padding);transition:all var(--transition-base);position:relative}._card_c05hf_131:hover{border:var(--card-hover-border);box-shadow:var(--shadow-md)}._cardHeader_c05hf_145{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)}._cardTitle_c05hf_154{margin:0;font-size:var(--font-lg);font-weight:600;color:#ffffffe6;display:flex;align-items:center;gap:var(--spacing-xs)}._cardActions_c05hf_164{display:flex;gap:var(--spacing-xs)}._processingCard_c05hf_171{animation:_expandCard_c05hf_1 .3s var(--transition-slow)}@keyframes _expandCard_c05hf_1{0%{opacity:0;transform:translateY(-10px);max-height:0}to{opacity:1;transform:translateY(0);max-height:5000px}}._formSection_c05hf_190{margin-bottom:var(--spacing-lg)}._formRow_c05hf_194{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-md);margin-bottom:var(--spacing-md)}._formGroup_c05hf_201{display:flex;flex-direction:column}._formLabel_c05hf_206{display:block;margin-bottom:var(--spacing-xs);font-size:var(--font-sm);font-weight:500;color:#fffc}._formInput_c05hf_214,._formSelect_c05hf_215,._formTextarea_c05hf_216{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)}._formInput_c05hf_214:focus,._formSelect_c05hf_215:focus,._formTextarea_c05hf_216:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--input-focus-ring)}._formInput_c05hf_214:disabled,._formSelect_c05hf_215:disabled,._formTextarea_c05hf_216:disabled{opacity:.5;cursor:not-allowed}._formHelp_c05hf_242{margin-top:var(--spacing-xs);font-size:var(--font-xs);color:#ffffff80}._formError_c05hf_248{margin-top:var(--spacing-xs);font-size:var(--font-xs);color:var(--color-danger)}@media(max-width:1024px){._routeEditorGrid_c05hf_83{grid-template-columns:1fr}._overviewCard_c05hf_94,._signalFlowCard_c05hf_100,._ingestCard_c05hf_107,._outputsCard_c05hf_112,._videoCard_c05hf_119,._audioCard_c05hf_124{grid-column:1 / -1;grid-row:auto}._formRow_c05hf_194{grid-template-columns:1fr}}@media(max-width:768px){._editContainer_c05hf_8{padding:var(--spacing-md)}._stickyHeader_c05hf_45{flex-direction:column;align-items:flex-start;gap:var(--spacing-sm)}._headerActions_c05hf_76{width:100%;justify-content:flex-end}._card_c05hf_131{padding:var(--spacing-md)}}@media(max-width:480px){._editContainer_c05hf_8{padding:var(--spacing-sm)}._routeEditorGrid_c05hf_83{gap:var(--spacing-md)}._headerActions_c05hf_76{flex-direction:column;width:100%}._headerActions_c05hf_76 button{width:100%}}@media(prefers-reduced-motion:reduce){._processingCard_c05hf_171{animation:none}._card_c05hf_131{transition:none}}.architecture-diagram{background:#2a2a2a;border:1px solid #444;border-radius:8px;padding:24px;box-shadow:0 1px 6px #0000004d;height:fit-content;min-height:240px;display:flex;flex-direction:column;justify-content:space-between;transition:all .2s ease}.architecture-diagram:hover{border-color:#ffffff26;box-shadow:0 2px 8px #0003}.arch-header{display:flex;align-items:center;gap:.4rem;margin-bottom:.5rem;padding-bottom:.4rem;border-bottom:1px solid #2a2a2a}.arch-icon{font-size:.9rem;opacity:.7}.arch-title{font-size:.85rem;font-weight:600;color:#aaa;flex:1;text-transform:uppercase;letter-spacing:.5px}.arch-badge{padding:.2rem .4rem;border-radius:3px;font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.2px;border:1px solid}.arch-badge.arch-direct{background:#a0d46826;border-color:#a0d468;color:#a0d468}.arch-badge.arch-udp-relay{background:#5b9bd526;border-color:#5b9bd5;color:#5b9bd5}.arch-badge.arch-ffmpeg{background:#ff6b6b26;border-color:#ff6b6b;color:#ff6b6b}.arch-flow{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.4rem}.flow-line{display:flex;align-items:center;gap:.3rem;justify-content:center}.flow-box{padding:.3rem .5rem;border-radius:3px;font-size:.65rem;font-weight:500;white-space:nowrap;border:1px solid;font-family:SF Mono,Monaco,Cascadia Code,monospace}.flow-box-mini{padding:.2rem .35rem;border-radius:2px;font-size:.6rem;font-weight:500;white-space:nowrap;border:1px solid;font-family:SF Mono,Monaco,Cascadia Code,monospace}.flow-input{background:#6496ff1f;border-color:#6496ff;color:#6496ff}.flow-process{background:#ff64961f;border-color:#ff6496;color:#ff6496}.flow-relay{background:#64c8ff1f;border-color:#64c8ff;color:#64c8ff;font-weight:500}.flow-ffmpeg{background:#ff96641f;border-color:#ff9664;color:#ff9664;font-weight:500;padding:.3rem .5rem}.flow-output{background:#64ff961f;border-color:#64ff96;color:#64ff96;font-weight:500}.flow-arrow{color:#555;font-size:.75rem;font-weight:400}.flow-multi{display:flex;flex-direction:column;gap:.25rem;padding:.3rem;background:#ffffff08;border-radius:3px;border:1px dashed #3a3a3a}.flow-line-mini{display:flex;align-items:center;gap:.3rem;justify-content:center}.flow-arrow-mini{color:#555;font-size:.7rem}.arch-description{text-align:center;font-size:.75rem;color:#999;padding-top:.4rem;border-top:1px solid #2a2a2a;font-family:SF Mono,Monaco,Cascadia Code,monospace;letter-spacing:.2px;line-height:1.4}.output-pid-modal .modal-body{padding:1.5rem 2rem}.output-pid-modal .form-group{margin-bottom:1.5rem}.output-pid-modal .form-group label{display:block;margin-bottom:.5rem;color:#aaa;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.output-pid-modal .form-group input,.output-pid-modal .form-group select{width:100%;padding:10px 12px;background:#1a1a1a;border:1px solid #444;border-radius:4px;color:#fff;font-size:14px;transition:border-color .2s}.output-pid-modal .form-group input:focus,.output-pid-modal .form-group select:focus{outline:none;border-color:#64748b}.codec-info{margin-top:6px;padding:6px 10px;background:#0a0a0a;border-left:3px solid #2196f3;border-radius:3px;color:#888;font-size:11px;font-style:italic}.layout-preview{margin-top:1.5rem;padding:1rem;background:#1a1a1a;border:1px solid #333;border-radius:6px}.layout-preview h4{margin:0 0 1rem;color:#64748b;font-size:12px;text-transform:uppercase;letter-spacing:.5px}.channels-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px}.channel-preview{padding:8px;background:#2a2a2a;border:2px solid #ff9800;border-radius:4px;text-align:center;color:#fff;font-size:12px;font-weight:600}@media(max-width:768px){.output-pid-list{gap:12px}.output-pid-card{padding:12px}.pid-header{flex-direction:column;align-items:flex-start;gap:8px}.pid-controls{width:100%;flex-wrap:wrap}.pid-form-row{flex-direction:column;gap:12px}.pid-form-row>*{width:100%}}@media(max-width:480px){.output-pid-card{padding:8px}.pid-title{font-size:14px}}.audio-matrix-editor{background:transparent;border:none;border-radius:0;padding:0;margin-top:1rem;overflow-x:auto}.matrix-header{margin-bottom:24px}.matrix-header h3{margin:0 0 8px;color:#64748b;font-size:20px}.matrix-info{color:#888;font-size:13px;font-style:italic}.matrix-container{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:24px}.matrix-section{background:#0a0a0a;border:1px solid #333;border-radius:6px;padding:16px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #333}.section-header h4{margin:0;color:#aaa;font-size:14px;text-transform:uppercase;letter-spacing:.5px}.btn-add{padding:6px 12px;background:#64748b;color:#fff;border:none;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s}.btn-add:hover{background:#475569;transform:translateY(-1px)}.pid-card{background:#2a2a2a;border:1px solid #444;border-radius:6px;padding:12px;margin-bottom:12px;transition:all .2s}.pid-card:hover{border-color:#64748b;transform:translate(2px)}.input-pid{border-left:3px solid #2196f3}.output-pid{border-left:3px solid #ff9800}.pid-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.pid-info{display:flex;flex-direction:column;gap:4px}.pid-number{color:#64748b;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.pid-name{color:#fff;font-size:14px;font-weight:600}.pid-codec,.pid-bitrate{color:#888;font-size:11px;font-family:Courier New,monospace}.pid-actions{display:flex;gap:8px}.btn-edit{width:28px;height:28px;padding:0;background:#2196f3;color:#fff;border:none;border-radius:4px;font-size:14px;line-height:1;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.btn-edit:hover{background:#1976d2;transform:translateY(-1px)}.btn-remove{width:24px;height:24px;padding:0;background:#f44336;color:#fff;border:none;border-radius:50%;font-size:18px;line-height:1;cursor:pointer;transition:all .2s}.btn-remove:hover{background:#da190b;transform:scale(1.1)}.pid-details{margin-bottom:8px;padding:8px;background:#1a1a1a;border-radius:4px}.detail-item{display:flex;gap:8px;font-size:12px}.detail-label{color:#888}.detail-value{color:#fff;font-weight:600}.channels{display:flex;gap:10px;flex-wrap:wrap}.channel{flex:1;min-width:60px;padding:8px;background:#1a1a1a;border:2px solid #444;border-radius:4px;text-align:center;cursor:pointer;transition:all .2s}.channel:hover{border-color:#64748b;transform:translateY(-2px);box-shadow:0 4px 8px #4caf5033}.channel.selected{border-color:#64748b;background:#1a3a1a;box-shadow:0 0 12px #4caf5066}.input-channel{border-color:#2196f3}.input-channel:hover,.input-channel.selected{border-color:#2196f3;background:#1a2a3a;box-shadow:0 0 12px #2196f366}.output-channel{border-color:#ff9800}.output-channel:hover,.output-channel.selected{border-color:#ff9800;background:#3a2a1a;box-shadow:0 0 12px #ff980066}.channel-name{color:#fff;font-size:12px;font-weight:600;margin-bottom:2px}.channel-number{color:#888;font-size:10px;font-family:Courier New,monospace}.routing-matrix-fullwidth{background:#0a0a0a;border:1px solid #333;border-radius:6px;padding:16px;margin-bottom:24px}.routing-grid{overflow-x:auto}.routing-table{width:100%;overflow-x:auto;overflow-y:visible;display:block;scrollbar-width:thin;scrollbar-color:#64748b #1a1a1a}.routing-table::-webkit-scrollbar{height:14px;-webkit-appearance:none}.routing-table::-webkit-scrollbar-track{background:#1a1a1a;border-radius:6px;border:1px solid #333}.routing-table::-webkit-scrollbar-thumb{background:#64748b;border-radius:6px;border:2px solid #1a1a1a}.routing-table::-webkit-scrollbar-thumb:hover{background:#475569}.routing-table table{width:100%;border-collapse:collapse;font-size:11px}.routing-table th{background:#2a2a2a;color:#64748b;padding:8px;text-align:center;border:1px solid #333;font-size:10px;text-transform:uppercase;letter-spacing:.5px}.routing-table .output-channels{display:flex;gap:4px;justify-content:center;margin-top:4px;font-size:9px;color:#888}.routing-table td{padding:12px;text-align:center;border:1px solid #333;background:#1a1a1a}.routing-table .input-label{background:#2a2a2a;color:#2196f3;font-weight:600;text-align:left;white-space:nowrap;font-size:10px}.route-cell{cursor:pointer;transition:all .2s;min-width:45px;height:45px;font-size:16px}.route-cell:hover{background:#2a2a2a;transform:scale(1.1)}.route-cell.routed{background:#64748b;color:#fff;font-weight:700;font-size:14px}.route-cell.routed:hover{background:#f44336}.route-summary{background:#0a0a0a;border:1px solid #333;border-radius:6px;padding:16px}.route-summary h4{margin:0 0 12px;color:#64748b;font-size:14px;text-transform:uppercase}.routes-list{display:flex;flex-wrap:wrap;gap:8px}.no-routes{color:#666;font-size:13px;text-align:center;padding:20px}.route-item{display:flex;align-items:center;gap:8px;padding:6px 12px;background:#2a2a2a;border:1px solid #444;border-radius:4px;font-size:12px}.route-input{color:#2196f3;font-weight:600}.route-arrow{color:#64748b;font-weight:700}.route-output{color:#ff9800;font-weight:600}@media(max-width:1200px){.matrix-container{grid-template-columns:1fr}}@media(max-width:1024px){.audio-matrix-editor{overflow-x:auto;-webkit-overflow-scrolling:touch}.routing-table{min-width:600px}}@keyframes pulse-route{0%,to{box-shadow:0 0 8px #4caf5066}50%{box-shadow:0 0 16px #4caf50cc}}.route-cell.routed{animation:pulse-route 2s ease-in-out infinite}.login-container{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#0a0a0a;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(80px);opacity:.15;animation:float 20s ease-in-out infinite}.login-gradient-1{width:600px;height:600px;background:radial-gradient(circle,#4caf50 0%,transparent 70%);top:-200px;left:-200px;animation-delay:0s}.login-gradient-2{width:500px;height:500px;background:radial-gradient(circle,#2196f3 0%,transparent 70%);bottom:-150px;right:-150px;animation-delay:7s}.login-gradient-3{width:400px;height:400px;background:radial-gradient(circle,#ff6b6b 0%,transparent 70%);top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:14s}@keyframes float{0%,to{transform:translate(0) scale(1)}33%{transform:translate(30px,-30px) scale(1.1)}66%{transform:translate(-20px,20px) scale(.9)}}.login-card{position:relative;z-index:1;width:100%;max-width:420px;background:#1a1a1af2;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:16px;border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px #00000080;overflow:hidden}.login-header{background:linear-gradient(135deg,#1a1a1a,#2a2a2a);padding:32px 32px 24px;border-bottom:1px solid rgba(255,255,255,.05)}.login-logo{display:flex;align-items:center;gap:16px}.logo-icon{font-size:48px;line-height:1;filter:drop-shadow(0 0 20px rgba(76,175,80,.5))}.logo-text h1{margin:0;font-size:24px;font-weight:700;color:#fff;letter-spacing:-.5px}.logo-text p{margin:4px 0 0;font-size:13px;color:#888;font-weight:400}.login-body{padding:32px}.setup-notice{background:linear-gradient(135deg,#4caf501a,#4caf500d);border:1px solid rgba(76,175,80,.3);border-radius:8px;padding:16px;margin-bottom:24px;text-align:center}.setup-notice strong{display:block;color:#4caf50;font-size:16px;margin-bottom:6px}.setup-notice p{margin:0;color:#aaa;font-size:14px}.login-form{display:flex;flex-direction:column;gap:20px}.form-group input{padding:12px 16px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;color:#fff;font-size:15px;transition:all .3s;font-family:inherit}.form-group input:focus{outline:none;border-color:#4caf50;background:#ffffff14;box-shadow:0 0 0 3px #4caf501a}.form-group input:disabled{opacity:.5;cursor:not-allowed}.form-group input::placeholder{color:#666}.login-error{background:#dc35451a;border:1px solid rgba(220,53,69,.3);border-radius:8px;padding:12px 16px;color:#ff6b6b;font-size:14px;text-align:center}.login-button{padding:14px 24px;background:linear-gradient(135deg,#4caf50,#45a049);border:none;border-radius:8px;color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:all .3s;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:8px;box-shadow:0 4px 12px #4caf504d}.login-button:hover:not(:disabled){background:linear-gradient(135deg,#45a049,#3d8b40);box-shadow:0 6px 16px #4caf5066;transform:translateY(-1px)}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-footer{margin-top:24px;text-align:center;color:#888;font-size:14px}.link-button{background:none;border:none;color:#4caf50;font-size:14px;font-weight:600;cursor:pointer;text-decoration:underline;padding:0;transition:color .2s}.link-button:hover:not(:disabled){color:#45a049}.link-button:disabled{opacity:.5;cursor:not-allowed}.login-version{padding:16px;text-align:center;color:#666;font-size:12px;border-top:1px solid rgba(255,255,255,.05);background:#0003}@media(max-width:480px){.login-card{max-width:100%;margin:16px;border-radius:12px}.login-header{padding:24px 24px 20px}.logo-icon{font-size:40px}.logo-text h1{font-size:20px}.login-body{padding:24px}}.admin-container{min-height:100vh;background:#0a0a0a}.admin-header{background:#1a1a1a;border-bottom:1px solid #333;padding:16px 24px}.admin-nav{display:flex;align-items:center;justify-content:space-between;max-width:1200px;margin:0 auto}.btn-back{padding:8px 16px;background:#2a2a2a;color:#fff;border:1px solid #444;border-radius:4px;cursor:pointer;font-size:.9em;transition:all .2s}.btn-back:hover{background:#333;border-color:#555}.admin-user-info{display:flex;align-items:center;gap:12px;padding:6px 12px;background:#4caf501a;border-radius:4px;border:1px solid rgba(76,175,80,.3);color:#4caf50;font-size:.9em}.role-badge{padding:2px 8px;background:#4caf5033;border-radius:3px;font-size:.75em;text-transform:uppercase;font-weight:600}.btn-logout{padding:8px 16px;background:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9em;font-weight:600;transition:background .2s}.btn-logout:hover{background:#c82333}.admin-body{max-width:800px;margin:40px auto;padding:0 24px}.admin-card{background:#1a1a1a;border:1px solid #333;border-radius:8px;padding:32px}.card-header{margin-bottom:32px}.card-header h2{margin:0 0 8px;color:#fff;font-size:24px;font-weight:700}.card-header p{margin:0;color:#888;font-size:14px}.admin-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{font-size:13px;font-weight:600;color:#aaa;text-transform:uppercase;letter-spacing:.5px}.form-group input,.form-group select{padding:12px 16px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:6px;color:#fff;font-size:15px;transition:all .3s;font-family:inherit}.form-group input:focus,.form-group select:focus{outline:none;border-color:#4caf50;background:#ffffff14;box-shadow:0 0 0 3px #4caf501a}.form-group input:disabled,.form-group select:disabled{opacity:.5;cursor:not-allowed}.form-group small{color:#666;font-size:12px;font-style:italic}.alert{padding:12px 16px;border-radius:6px;font-size:14px}.alert-error{background:#dc35451a;border:1px solid rgba(220,53,69,.3);color:#ff6b6b}.alert-success{background:#4caf501a;border:1px solid rgba(76,175,80,.3);color:#4caf50}.btn-submit{padding:14px 24px;background:linear-gradient(135deg,#4caf50,#45a049);border:none;border-radius:6px;color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:all .3s;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:8px;box-shadow:0 4px 12px #4caf504d}.btn-submit:hover:not(:disabled){background:linear-gradient(135deg,#45a049,#3d8b40);box-shadow:0 6px 16px #4caf5066;transform:translateY(-1px)}.btn-submit:disabled{opacity:.6;cursor:not-allowed}.loading-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.admin-help{margin-top:32px;padding-top:24px;border-top:1px solid #2a2a2a}.admin-help h3{margin:0 0 12px;color:#aaa;font-size:16px;font-weight:600}.admin-help ul{margin:0;padding-left:20px;color:#888;font-size:14px;line-height:1.8}.admin-help li strong{color:#4caf50}.btn-primary{padding:10px 20px;background:#4caf50;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:600;transition:background .2s}.btn-primary:hover{background:#45a049}@media(max-width:768px){.admin-body{padding:0 16px;margin:24px auto}.admin-card{padding:24px 20px}}.system-monitor-container{min-height:100vh;background:linear-gradient(135deg,#1a1a2e,#16213e);color:#fff}.system-monitor-header{background:#ffffff0d;border-bottom:2px solid rgba(255,255,255,.1);padding:1rem 2rem;position:sticky;top:0;z-index:100;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.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-size:1.5rem;font-weight:600}.last-update{display:block;font-size:.75rem;color:#fff9;margin-top:.25rem}.system-monitor-user-info{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.btn-back,.btn-logout{padding:.5rem 1rem;border:none;border-radius:8px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-back{background:#ffffff1a;color:#fff}.btn-back:hover{background:#fff3;transform:translate(-2px)}.btn-logout{background:linear-gradient(135deg,#ff4757,#ff6348);color:#fff}.btn-logout:hover{background:linear-gradient(135deg,#ff6348,#ff4757);transform:scale(1.05)}.system-monitor-body{max-width:1400px;margin:0 auto;padding:2rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:1.5rem}.metrics-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.5rem;transition:all .3s ease}.metrics-card:hover{background:#ffffff14;border-color:#fff3;transform:translateY(-2px)}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid rgba(255,255,255,.1)}.card-header h3{margin:0;font-size:1.1rem;font-weight:600}.metric-badge{padding:.25rem .75rem;border-radius:20px;font-size:.85rem;font-weight:600}.status-good{background:#2ed57333;color:#2ed573}.status-warning{background:#ffa80133;color:#ffa801}.status-critical{background:#ff475733;color:#ff4757}.progress-bar{width:100%;height:24px;background:#0000004d;border-radius:12px;overflow:hidden;margin-bottom:1rem}.progress-fill{height:100%;transition:width .5s ease;display:flex;align-items:center;justify-content:flex-end;padding-right:.5rem;font-size:.75rem;font-weight:600}.progress-fill.status-good{background:linear-gradient(90deg,#2ed573,#26d07c)}.progress-fill.status-warning{background:linear-gradient(90deg,#ffa801,#ffbe0b)}.progress-fill.status-critical{background:linear-gradient(90deg,#ff4757,#ff6348)}.metric-details{display:flex;flex-direction:column;gap:.5rem}.metric-info p{margin:.25rem 0;font-size:.9rem;color:#fffc}.metric-info strong{color:#ffffffe6}.info-card{grid-column:1 / -1}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem}.info-item{display:flex;gap:.5rem}.info-label{font-weight:600;color:#ffffffb3}.info-value{color:#fff}.uptime-card{grid-column:1 / -1}.uptime-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.uptime-item{display:flex;flex-direction:column;gap:.25rem;padding:1rem;background:#0003;border-radius:8px}.uptime-label{font-size:.85rem;color:#fff9}.uptime-value{font-size:1.25rem;font-weight:600;color:#2ed573}.network-card{grid-column:1 / -1}.network-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem}.network-item{background:#0003;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:1rem}.network-name{font-weight:600;font-size:1.1rem;margin-bottom:.5rem;color:#5f27cd}.network-details p{margin:.25rem 0;font-size:.85rem;color:#fffc}.processes-card{grid-column:1 / -1}.process-section{margin-bottom:1.5rem}.process-section:last-child{margin-bottom:0}.process-section h4{margin:0 0 .75rem;font-size:1rem;color:#ffffffe6}.process-table{overflow-x:auto;border-radius:8px;background:#0003}.process-table table{width:100%;border-collapse:collapse}.process-table thead{background:#0000004d}.process-table th{padding:.75rem;text-align:left;font-weight:600;font-size:.85rem;color:#fffc;border-bottom:1px solid rgba(255,255,255,.1)}.process-table td{padding:.75rem;font-size:.85rem;color:#ffffffe6;border-bottom:1px solid rgba(255,255,255,.05)}.process-table tbody tr:hover{background:#ffffff0d}.process-command{font-family:Courier New,monospace;font-size:.75rem;color:#ffffffb3;max-width:800px;word-break:break-all;white-space:pre-wrap;line-height:1.3}.no-processes{text-align:center;padding:2rem;color:#ffffff80}.loading-container{position:fixed;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;background:linear-gradient(135deg,#1a1a2e,#16213e);z-index:9999;gap:1.5rem}.loading-icon{font-size:4rem;animation:pulse 2s ease-in-out infinite}.loading-spinner{width:60px;height:60px;border:4px solid rgba(95,39,205,.2);border-top-color:#5f27cd;border-right-color:#5f27cd;border-radius:50%;animation:spin .8s cubic-bezier(.68,-.55,.265,1.55) infinite;box-shadow:0 0 30px #5f27cd66}.loading-text{font-size:1rem;color:#ffffffb3;font-weight:500;letter-spacing:.5px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.85}}.alert{padding:1rem;border-radius:8px;margin-bottom:1rem;grid-column:1 / -1}.alert-error{background:#ff475733;border:1px solid rgba(255,71,87,.4);color:#ff4757}.role-badge{padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600;background:#5f27cd33;color:#5f27cd;text-transform:uppercase}@media(max-width:768px){.system-monitor-nav{flex-direction:column;gap:.75rem}.system-monitor-title{order:-1}.system-monitor-body{grid-template-columns:1fr;padding:1rem}.info-grid,.uptime-grid,.network-list{grid-template-columns:1fr}.process-table{font-size:.75rem}.process-table th,.process-table td{padding:.5rem}.process-command{max-width:200px}}.per-core-usage{margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.1)}.cores-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem;margin-top:.5rem}.core-item{display:flex;align-items:center;gap:.5rem;font-size:.85rem}.core-label{min-width:50px;font-weight:600;opacity:.9}.core-bar-container{flex:1;height:20px;background:#0000004d;border-radius:10px;overflow:hidden;position:relative}.core-bar-fill{height:100%;border-radius:10px;transition:width .3s ease}.core-value{min-width:40px;text-align:right;font-weight:600;font-size:.8rem}.app{width:100%;min-height:100vh}
