:root{--bg-app: #121212;--bg-panel: #1e1e1e;--bg-hover: #2a2a2a;--bg-input: #252525;--border-color: #333;--text-main: #e0e0e0;--text-muted: #a0a0a0;--accent: #3498db;--accent-hover: #2980b9;--danger: #e74c3c;--warning: #f39c12;--success: #27ae60;--shadow-sm: 0 2px 4px rgba(0,0,0,.2);--shadow-md: 0 4px 8px rgba(0,0,0,.3);--radius-sm: 4px;--radius-md: 8px;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background-color:var(--bg-app);color:var(--text-main);-webkit-font-smoothing:antialiased}div#root{min-height:100vh;display:flex;flex-direction:column}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg-app)}::-webkit-scrollbar-thumb{background:#444;border-radius:5px;border:2px solid var(--bg-app)}::-webkit-scrollbar-thumb:hover{background:#555}button{background:var(--bg-panel);border:1px solid var(--border-color);color:var(--text-main);padding:.5rem 1rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.85rem;font-weight:500;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;gap:.5rem}button:hover{background:var(--bg-hover);border-color:#555}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background:var(--accent-hover)}button.danger{background:#e74c3c1a;border-color:var(--danger);color:var(--danger)}button.danger:hover{background:var(--danger);color:#fff}button.ghost{background:transparent;border-color:transparent}button.ghost:hover{background:var(--bg-hover)}input,select{background:var(--bg-input);border:1px solid var(--border-color);color:var(--text-main);padding:.5rem .75rem;border-radius:var(--radius-sm);font-size:.9rem;outline:none;transition:border-color .2s}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 2px #3498db33}.app-container{padding:1.5rem;gap:1rem;height:100vh;box-sizing:border-box;display:flex;flex-direction:column}header{display:flex;justify-content:space-between;align-items:center;padding-bottom:20px}header h1{margin:0;font-size:1.25rem;font-weight:600;letter-spacing:-.5px;opacity:.9;color:#fff}.tab-group{display:flex;background:var(--bg-input);border-radius:var(--radius-sm);padding:2px;border:1px solid var(--border-color)}.tab-group button{background:transparent;border:none;border-radius:2px;padding:4px 12px;font-size:.8rem}.tab-group button.active{background:var(--bg-hover);color:#fff;font-weight:600;box-shadow:var(--shadow-sm)}.controls{background:var(--bg-panel);padding:1rem;border-radius:var(--radius-md);border:1px solid var(--border-color);display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;box-shadow:var(--shadow-sm);margin-bottom:20px}.table-wrapper{flex:1;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:auto;display:flex;flex-direction:column;box-shadow:var(--shadow-sm);position:relative}table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:.8rem}th{background:var(--bg-panel);position:sticky;top:0;z-index:10;text-align:left;padding:.75rem 1rem;font-weight:600;color:var(--text-muted);border-bottom:1px solid var(--border-color);border-right:1px solid transparent}td{padding:.6rem 1rem;border-bottom:1px solid #2a2a2a;vertical-align:top;line-height:1.5;color:#ccc}tr:hover td{background:var(--bg-hover);color:#fff}.badge{display:inline-block;padding:2px 8px;border-radius:99px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;text-align:center;min-width:50px}.badge.info{background:#27ae6033;color:#2ecc71;border:1px solid rgba(39,174,96,.3)}.badge.warn{background:#f39c1233;color:#f1c40f;border:1px solid rgba(243,156,18,.3)}.badge.error{background:#c0392b33;color:#e74c3c;border:1px solid rgba(192,57,43,.3)}.badge.debug{background:#7f8c8d33;color:#95a5a6;border:1px solid rgba(127,140,141,.3)}.service-badge{font-family:var(--font-mono);font-size:.7rem;padding:2px 6px;border-radius:4px;border:1px solid rgba(255,255,255,.1);opacity:.9}.svc-webclient{color:#3498db;border-color:#3498db4d;background:#3498db1a}.svc-signaling-server{color:#9b59b6;border-color:#9b59b64d;background:#9b59b61a}.svc-sfu-server{color:#e67e22;border-color:#e67e224d;background:#e67e221a}.svc-other{color:#95a5a6;border-color:#95a5a64d;background:#95a5a61a}.chip{padding:4px 10px;border-radius:99px;font-size:.8rem;border:1px solid var(--border-color);background:var(--bg-input);color:var(--text-muted);cursor:pointer;transition:all .2s}.chip:hover{border-color:#666;color:#fff}.chip.active{background:var(--accent);color:#fff;border-color:var(--accent)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease-out}.modal-content{background:var(--bg-panel);width:100%;max-width:480px;padding:2rem;border-radius:var(--radius-md);border:1px solid var(--border-color);box-shadow:0 20px 40px #0006;animation:slideUp .25s cubic-bezier(.16,1,.3,1)}details summary{cursor:pointer;color:var(--accent);outline:none;list-style:none;font-size:.75rem}details summary::-webkit-details-marker{display:none}details summary:before{content:"▶";font-size:.6rem;display:inline-block;margin-right:5px;transition:transform .2s}details[open] summary:before{transform:rotate(90deg)}pre{margin:.5rem 0 0;background:#111;padding:.75rem;border-radius:var(--radius-sm);overflow-x:auto;color:#ccc;border:1px solid #333}.no-logs{text-align:center;padding:3rem;color:var(--text-muted);font-style:italic}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at center,#252525,#121212)}.login-card{background:var(--bg-panel);padding:2.5rem;border-radius:12px;border:1px solid var(--border-color);width:100%;max-width:360px;box-shadow:0 8px 30px #00000080}.login-card h2{text-align:center;margin-bottom:2rem;color:var(--text-main);letter-spacing:-.5px}.login-form{display:flex;flex-direction:column;gap:1rem}.login-form input{padding:.75rem;background:var(--bg-app)}.login-form button{padding:.75rem;margin-top:.5rem}
