:root{--bg:#0a0e14;--panel:#111820;--panel2:#131c26;--green:#22c55e;--red:#ef4444;--cyan:#38bdf8;--text:#cbd5e1;--dim:#64748b;--border:#1f2a37}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,sans-serif;font-size:12px}.mono,.metrics-table,.data-table,.kv{font-variant-numeric:tabular-nums;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace}.green{color:var(--green)}.red{color:var(--red)}.cyan{color:var(--cyan)}.dim{color:var(--dim)}.badge{color:var(--cyan);text-transform:uppercase;letter-spacing:.5px;background:#38bdf826;border-radius:3px;padding:1px 6px;font-size:9px}.app{flex-direction:column;height:100vh;display:flex}.topbar{background:var(--panel2);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding:6px 12px;display:flex}.brand{letter-spacing:2px;color:var(--cyan);white-space:nowrap;font-weight:800}.group{align-items:center;gap:4px;display:flex}select,input{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:4px 6px;font-size:11px}.asset-list{flex-wrap:wrap;gap:3px;max-width:420px;display:flex}.chip{background:var(--bg);color:var(--dim);border:1px solid var(--border);cursor:pointer;border-radius:3px;padding:2px 6px;font-family:monospace;font-size:10px}.chip.on{color:var(--cyan);border-color:var(--cyan);background:#38bdf81f}.modes .pill{cursor:pointer;background:var(--bg);color:var(--dim);border:1px solid var(--border);border-radius:20px;padding:4px 12px;font-size:10px;font-weight:700}.pill.on.demo{color:var(--cyan);border-color:var(--cyan)}.pill.on.paper{color:var(--green);border-color:var(--green)}.pill.real{color:var(--red);opacity:.8;cursor:pointer;border-color:#ef444466}.spacer{flex:1}.btn{background:var(--panel2);color:var(--text);border:1px solid var(--border);cursor:pointer;white-space:nowrap;border-radius:4px;padding:5px 10px;font-size:11px}.btn:hover{border-color:var(--dim)}.btn.accent{color:var(--cyan);border-color:var(--cyan);background:#38bdf826;font-weight:700}.btn.danger{color:var(--red);border-color:var(--red);background:#ef444426;font-weight:700}.btn.tiny{padding:1px 6px;font-size:10px}.btn.wide{width:100%;margin-top:10px}.btn:disabled{opacity:.4;cursor:not-allowed}.exec{padding:7px 14px}.ws-status{min-width:100px;font-size:11px}.ws-status.connected{color:var(--green)}.ws-status.reconnecting,.ws-status.disconnected{color:var(--red)}.grid{flex:1;grid-template:"left center right"1fr"bottom bottom bottom"/380px 1fr 340px;gap:8px;padding:8px;display:grid;overflow:auto}.col-left{flex-direction:column;grid-area:left;gap:8px;min-height:0;display:flex}.col-center{flex-direction:column;grid-area:center;gap:8px;min-height:0;display:flex}.col-right{flex-direction:column;grid-area:right;gap:8px;display:flex;overflow-y:auto}.bottom{grid-area:bottom}.panel{background:var(--panel);border:1px solid var(--border);border-radius:6px;overflow:hidden}.panel-head{letter-spacing:1px;color:var(--dim);border-bottom:1px solid var(--border);background:var(--panel2);text-transform:uppercase;justify-content:space-between;align-items:center;gap:6px;padding:6px 10px;font-size:10px;font-weight:700;display:flex}.chart-panel{flex-direction:column;display:flex}.toggles{flex-wrap:wrap;gap:3px;display:flex}.toggle{color:var(--dim);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:3px;padding:1px 5px;font-size:9px}.toggle.on{color:var(--cyan);border-color:var(--cyan)}.agent-detail{border-top:1px solid var(--border);padding:8px 12px}.agent-detail-head{align-items:center;gap:8px;margin-bottom:6px;display:flex}.state-pill{text-transform:uppercase;border:1px solid var(--border);color:var(--dim);border-radius:10px;padding:1px 8px;font-size:9px}.state-pill.running{color:var(--cyan);border-color:var(--cyan);animation:1.2s infinite pulse}.state-pill.done{color:var(--green);border-color:var(--green)}.state-pill.fail{color:var(--red);border-color:var(--red)}@keyframes pulse{50%{box-shadow:0 0 8px var(--cyan)}}.progress{background:var(--border);border-radius:2px;height:4px;margin-bottom:6px;overflow:hidden}.progress-bar{background:var(--cyan);height:100%;transition:width .3s}.task{color:var(--dim);margin:4px 0}.agent-detail ul{margin:4px 0 4px 16px}.agent-detail li{margin:2px 0}.agent-detail li.risks,.risks li{color:var(--red)}.buy{color:var(--green)}.sell{color:var(--red)}.hold{color:#f59e0b}.legend{text-transform:none;gap:8px;font-size:9px;display:flex}.legend i{border-radius:50%;width:7px;height:7px;margin-right:3px;display:inline-block}.kv div{border-bottom:1px solid var(--border);justify-content:space-between;padding:3px 10px;display:flex}.strategy-card{border-bottom:1px solid var(--border);padding:8px 10px}.strategy-head{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:4px;display:flex}.metrics-table{width:100%;margin:4px 0;font-size:10px}.metrics-table td{color:var(--text);padding:2px 4px}.btn-row{gap:4px;display:flex}.check-row{align-items:baseline;gap:8px;padding:3px 10px;font-size:11px;display:flex}.check-row .reason{color:var(--dim);flex:1}.consensus-row{align-items:center;gap:6px;margin:3px 0;font-size:10px;display:flex}.consensus-row .bar{background:var(--border);border-radius:3px;flex:1;height:6px}.bar-fill{border-radius:3px;height:100%;transition:width .4s}.vote{border-top:1px solid var(--border);padding:4px 10px}.vote summary{cursor:pointer;align-items:center;gap:8px;display:flex}.vote p{color:var(--dim);margin:4px 0}.vote-pill{border:1px solid var(--border);text-transform:uppercase;border-radius:10px;padding:1px 8px;font-size:9px}.vote-pill.approve{color:var(--green);border-color:var(--green)}.vote-pill.reject{color:var(--red);border-color:var(--red)}.vote-pill.abstain{color:var(--dim)}.tabs-panel{flex-direction:column;min-height:160px;max-height:240px;display:flex}.tab-bar{border-bottom:1px solid var(--border);background:var(--panel2);display:flex}.tab{color:var(--dim);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:7px 16px;font-size:11px}.tab.active{color:var(--cyan);border-bottom-color:var(--cyan)}.tab-body{flex:1;padding:4px 0;overflow-y:auto}.data-table{border-collapse:collapse;width:100%;font-size:11px}.data-table th{text-align:left;color:var(--dim);border-bottom:1px solid var(--border);padding:4px 10px}.data-table td{padding:3px 10px}.alert-row{border-left:3px solid var(--dim);margin:3px 6px;padding:4px 10px}.alert-row.sev-critical,.alert-row.sev-error{border-color:var(--red)}.alert-row.sev-warning{border-color:#f59e0b}.alert-row.sev-info{border-color:var(--cyan)}.audit-row{gap:10px;padding:3px 10px;font-size:11px;display:flex}.audit-row span:first-child{min-width:140px}.modal-overlay{z-index:100;background:#000000a6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:8px;width:min(520px,92vw);max-height:85vh;padding:16px;overflow-y:auto}.modal-head{justify-content:space-between;margin-bottom:10px;font-size:13px;display:flex}.modal p{margin:6px 0}.deploy-summary ul{color:var(--dim);margin:4px 0 4px 18px}.check{cursor:pointer;align-items:flex-start;gap:8px;margin-top:10px;display:flex}.disclaimer{color:#f59e0b;background:#f59e0b14;border:1px solid #f59e0b66;border-radius:4px;margin:10px 0;padding:8px;font-size:11px}.mode-badge{float:right;color:var(--green);letter-spacing:1px;background:#22c55e1f;border-radius:3px;padding:2px 10px;font-size:10px;font-weight:700}.disclaimer-footer{color:#f59e0b;background:var(--panel2);border-top:1px solid var(--border);padding:5px 12px;font-size:10px}@media (width<=1100px){.grid{grid-template:"left""center""right""bottom"/1fr}.col-right{overflow-y:visible}.asset-list{max-width:100%}}
