:root{--bg: #0a0b10;--bg-panel: #0d0f16;--bg-raised: #12141d;--border: #232636;--text: #c8cad6;--text-dim: #6b6e82;--green: #39ff14;--cyan: #00e5ff;--magenta: #ff2d95;--amber: #ffb000;--red: #ff3b3b;--font: "JetBrains Mono", "SF Mono", "Fira Code", Menlo, monospace}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased}::selection{background:var(--magenta);color:var(--bg)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border)}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}a{color:var(--cyan);text-decoration:none}button{font-family:var(--font);font-size:12px;background:transparent;color:var(--cyan);border:1px solid var(--cyan);padding:4px 12px;cursor:pointer;text-transform:uppercase;letter-spacing:.5px}button:hover:not(:disabled){background:var(--cyan);color:var(--bg)}button:disabled{color:var(--text-dim);border-color:var(--border);cursor:not-allowed}button.danger{color:var(--red);border-color:var(--red)}button.danger:hover:not(:disabled){background:var(--red);color:var(--bg)}button.primary{color:var(--green);border-color:var(--green)}button.primary:hover:not(:disabled){background:var(--green);color:var(--bg)}input,textarea,select{font-family:var(--font);font-size:13px;background:var(--bg);color:var(--text);border:1px solid var(--border);padding:6px 10px;outline:none}input:focus,textarea:focus{border-color:var(--cyan)}.app{display:flex;height:100vh;overflow:hidden}.nav{width:210px;min-width:210px;border-right:1px solid var(--border);background:var(--bg-panel);display:flex;flex-direction:column;padding:12px 0}.nav-logo{color:var(--green);font-weight:700;padding:4px 16px 16px;white-space:pre;font-size:10px;line-height:1.2}.nav a.nav-item{display:block;padding:8px 16px;color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;font-size:12px;border-left:2px solid transparent}.nav a.nav-item:hover{color:var(--text)}.nav a.nav-item.active{color:var(--green);border-left-color:var(--green);background:var(--bg-raised)}.nav-footer{margin-top:auto;padding:12px 16px;border-top:1px solid var(--border);font-size:11px;color:var(--text-dim)}.main{flex:1;display:flex;flex-direction:column;overflow:hidden}.content{flex:1;overflow-y:auto;padding:16px}.ticker{display:flex;align-items:center;gap:24px;padding:8px 16px;border-bottom:1px solid var(--border);background:var(--bg-panel);overflow-x:auto;white-space:nowrap}.ticker .sym{color:var(--text-dim)}.ticker .px{color:var(--text);font-weight:700}.ticker .up{color:var(--green)}.ticker .down{color:var(--red)}.ticker .feed-ok{color:var(--green)}.ticker .feed-stale{color:var(--amber)}.ticker .feed-down{color:var(--red)}.panel{border:1px solid var(--border);background:var(--bg-panel);margin-bottom:16px}.panel-title{color:var(--cyan);font-size:12px;letter-spacing:1px;padding:8px 12px;border-bottom:1px solid var(--border);text-transform:uppercase;-webkit-user-select:none;user-select:none}.panel-title .accent{color:var(--magenta)}.panel-body{padding:12px}.grid{display:grid;gap:16px}.grid-bots{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.bot-card{border:1px solid var(--border);background:var(--bg-panel);cursor:pointer}.bot-card:hover{border-color:var(--cyan)}.bot-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border)}.led{width:8px;height:8px;display:inline-block}.led.running{background:var(--green)}.led.paused{background:var(--amber)}.led.stopped{background:var(--red)}.bot-name{color:var(--text);font-weight:700;letter-spacing:.5px}.bot-tag{margin-left:auto;font-size:10px;color:var(--magenta);border:1px solid var(--magenta);padding:1px 6px;text-transform:uppercase}.bot-tag.house{color:var(--amber);border-color:var(--amber)}.bot-stats{display:flex;gap:16px;padding:10px 12px;align-items:baseline}.bot-equity{font-size:18px;font-weight:700;color:var(--text)}.pnl-pos{color:var(--green)}.pnl-neg{color:var(--red)}.bot-spark{padding:0 12px 10px}.bot-meta{padding:0 12px 10px;color:var(--text-dim);font-size:11px}table{width:100%;border-collapse:collapse;font-size:12px}th{text-align:left;color:var(--text-dim);text-transform:uppercase;font-size:10px;letter-spacing:1px;padding:6px 10px;border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none}td{padding:5px 10px;border-bottom:1px solid var(--bg-raised)}tr:hover td{background:var(--bg-raised)}.num{text-align:right;font-variant-numeric:tabular-nums}.tape{max-height:220px;overflow-y:auto;font-size:11px}.tape-row{display:flex;gap:12px;padding:3px 12px;border-bottom:1px solid var(--bg-raised)}.tape-row .t{color:var(--text-dim)}.side-buy{color:var(--green)}.side-sell{color:var(--red)}.toolkit-layout{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}@media (max-width: 1100px){.toolkit-layout{grid-template-columns:1fr}}.chat-log{height:420px;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:10px}.chat-msg{max-width:92%;padding:8px 10px;border:1px solid var(--border);white-space:pre-wrap;font-size:12px}.chat-msg.user{align-self:flex-end;border-color:var(--magenta);color:var(--text)}.chat-msg.assistant{align-self:flex-start;border-color:var(--cyan)}.chat-input{display:flex;gap:8px;padding:12px;border-top:1px solid var(--border)}.chat-input input{flex:1}.config-preview{font-size:11px;white-space:pre-wrap;word-break:break-all;padding:12px;max-height:420px;overflow-y:auto;color:var(--text)}.banner{padding:6px 12px;font-size:11px;text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid var(--border)}.banner.ok{color:var(--green)}.banner.bad{color:var(--red)}.banner.warn{color:var(--amber)}.epoch-status{font-size:10px;padding:1px 6px;border:1px solid;text-transform:uppercase}.st-computed{color:var(--text-dim);border-color:var(--text-dim)}.st-needs_review{color:var(--amber);border-color:var(--amber)}.st-approved{color:var(--cyan);border-color:var(--cyan)}.st-distributing{color:var(--magenta);border-color:var(--magenta)}.st-done{color:var(--green);border-color:var(--green)}.st-failed{color:var(--red);border-color:var(--red)}.commentary{border:1px solid var(--magenta);padding:10px 12px;font-size:12px;color:var(--text);white-space:pre-wrap}.commentary-label{color:var(--magenta);font-size:10px;letter-spacing:1px;margin-bottom:6px}.mono-block{font-size:11px;color:var(--text-dim);white-space:pre-wrap;word-break:break-all}.row{display:flex;gap:12px;align-items:center}.spacer{flex:1}.dim{color:var(--text-dim)}.green{color:var(--green)}.cyan{color:var(--cyan)}.magenta{color:var(--magenta)}.amber{color:var(--amber)}.red{color:var(--red)}.tabs{display:flex;gap:0;border-bottom:1px solid var(--border)}.tabs button{border:none;border-bottom:2px solid transparent;color:var(--text-dim);padding:8px 16px}.tabs button:hover{background:transparent;color:var(--text)}.tabs button.active{color:var(--green);border-bottom-color:var(--green)}.login-wrap{display:flex;align-items:center;justify-content:center;height:100%}.login-box{width:620px;max-width:94vw}.login-cols{display:grid;grid-template-columns:1fr 1fr;gap:0}.login-col{padding:20px;display:flex;flex-direction:column;gap:10px}.login-col+.login-col{border-left:1px solid var(--border)}@media (max-width: 640px){.login-cols{grid-template-columns:1fr}.login-col+.login-col{border-left:none;border-top:1px solid var(--border)}}.error-text{color:var(--red);font-size:11px}.ok-text{color:var(--green);font-size:11px}
