:root{--bg: #0a0e17;--panel: #111723;--panel-2: #161d2b;--elev: #1b2433;--border: #232c3d;--border-2: #2e3a4f;--text: #e8edf5;--muted: #8a96aa;--faint: #5d6878;--accent: #3d7eff;--green: #16c784;--green-bg: rgba(22,199,132,.12);--red: #ea3943;--red-bg: rgba(234,57,67,.12);--amber: #f0a020;--amber-bg: rgba(240,160,32,.12);--purple: #9b7bff;--teal: #2ec5c5;--radius: 14px;--radius-sm: 9px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}h1,h2,h3{font-weight:600;margin:0}.mono{font-family:Cascadia Code,JetBrains Mono,Consolas,monospace}.muted{color:var(--muted)}.faint{color:var(--faint)}.pos{color:var(--green)}.neg{color:var(--red)}.right{text-align:right}.num{text-align:right;font-variant-numeric:tabular-nums}.shell{display:grid;grid-template-columns:232px 1fr;min-height:100vh}.sidebar{background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:18px 14px;gap:6px}.brand{display:flex;align-items:center;gap:10px;padding:6px 10px 18px}.brand .logo{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--accent),var(--purple));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700}.brand .name{font-size:15px;font-weight:700;letter-spacing:.3px}.brand .sub{font-size:11px;color:var(--faint)}.nav-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;border:none;background:none;font-size:14px;width:100%;text-align:left;transition:background .12s,color .12s}.nav-item:hover{background:var(--panel-2);color:var(--text)}.nav-item.active{background:var(--elev);color:var(--text)}.nav-item.active .ic{color:var(--accent)}.nav-item .ic{color:var(--faint);display:flex}.nav-item .badge-count{margin-left:auto;background:var(--panel-2);color:var(--muted);font-size:11px;padding:1px 7px;border-radius:10px}.sidebar .grow{flex:1}.side-foot{border-top:1px solid var(--border);padding-top:12px;font-size:11px;color:var(--faint);line-height:1.5}.content{display:flex;flex-direction:column;min-width:0}.topbar{display:flex;align-items:center;gap:18px;padding:12px 24px;background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.topbar .title{font-size:17px;font-weight:600}.topbar .spacer{flex:1}.acct{display:flex;flex-direction:column;align-items:flex-end;line-height:1.25}.acct .k{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.acct .v{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}.topbar .divider{width:1px;height:30px;background:var(--border)}.logout-btn{background:var(--panel-2);color:var(--muted);border:1px solid var(--border);border-radius:var(--radius-sm);padding:7px 12px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:6px}.logout-btn:hover{border-color:var(--red);color:var(--red)}.menu-toggle{display:none;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 8px;cursor:pointer;align-items:center}.menu-backdrop{display:none}.view{padding:24px;max-width:1320px;width:100%;margin:0 auto}.view-head{display:flex;align-items:center;gap:14px;margin-bottom:18px}.view-head h2{font-size:18px}.view-head .spacer{flex:1}.pill{padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.pill.green{background:var(--green-bg);color:var(--green)}.pill.red{background:var(--red-bg);color:var(--red)}.pill.amber{background:var(--amber-bg);color:var(--amber)}.pill.blue{background:#3d7eff24;color:var(--accent)}.pill.gray{background:#8a96aa24;color:var(--muted)}.pill.purple{background:#9b7bff29;color:var(--purple)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.green{background:var(--green)}.dot.red{background:var(--red)}.dot.amber{background:var(--amber)}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:20px}.metric{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.metric .label{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.4px}.metric .label .ic{color:var(--faint)}.metric .value{font-size:26px;font-weight:700;margin-top:8px;font-variant-numeric:tabular-nums}.metric .sub{font-size:12px;color:var(--muted);margin-top:4px}.hero{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px 22px;margin-bottom:20px}.hero .top{display:flex;align-items:flex-start;gap:16px}.hero .eq-label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.5px}.hero .eq-value{font-size:34px;font-weight:800;font-variant-numeric:tabular-nums;margin-top:4px}.hero .eq-delta{font-size:14px;font-weight:600;margin-top:4px}.hero .spacer{flex:1}.spark{width:100%;height:130px;display:block;margin-top:12px}.spark-empty{height:130px;display:flex;align-items:center;justify-content:center;color:var(--faint);font-size:13px;margin-top:12px;border:1px dashed var(--border);border-radius:var(--radius-sm)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px;margin-bottom:18px}.panel h2{font-size:15px;margin-bottom:14px;display:flex;align-items:center;gap:8px}.panel h3{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin:16px 0 10px}.grid-2{display:grid;grid-template-columns:2fr 1fr;gap:18px;align-items:start}@media (max-width: 960px){.grid-2,.shell{grid-template-columns:1fr}.sidebar{flex-direction:row;flex-wrap:wrap}}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:10px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600;text-transform:uppercase;font-size:11px;letter-spacing:.4px}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--panel-2)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}button.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border-2);border-radius:var(--radius-sm);padding:7px 13px;cursor:pointer;font-size:13px;display:inline-flex;align-items:center;gap:6px;transition:border-color .12s,background .12s}button.btn:hover{border-color:var(--accent)}button.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.btn.primary:hover{filter:brightness(1.08)}button.btn.danger{background:transparent;border-color:#ea394380;color:var(--red)}button.btn.danger:hover{background:var(--red-bg)}button.btn.warn{background:transparent;border-color:#f0a02080;color:var(--amber)}button.btn.warn:hover{background:var(--amber-bg)}button.btn.ghost{background:transparent;border-color:var(--border)}button.btn:disabled{opacity:.4;cursor:not-allowed}button.btn.sm{padding:5px 10px;font-size:12px}.btn-row{display:flex;gap:7px;flex-wrap:wrap}input,select{background:var(--bg);color:var(--text);border:1px solid var(--border-2);border-radius:var(--radius-sm);padding:9px 11px;font-size:13px;width:100%;font-family:inherit}input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #3d7eff26}input::placeholder{color:var(--faint)}.field{display:flex;flex-direction:column;gap:6px}.field>label{color:var(--muted);font-size:12px;font-weight:500}.field .hint{color:var(--faint);font-size:11px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}.seg{display:inline-flex;background:var(--bg);border:1px solid var(--border-2);border-radius:var(--radius-sm);padding:3px;gap:3px;flex-wrap:wrap}.seg button{background:none;border:none;color:var(--muted);padding:6px 12px;border-radius:6px;cursor:pointer;font-size:12px;font-weight:500}.seg button.on{background:var(--accent);color:#fff}.seg button:not(.on):hover{color:var(--text)}.toggle{display:inline-flex;align-items:center;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle .track{width:38px;height:22px;border-radius:12px;background:var(--border-2);position:relative;transition:background .15s}.toggle .track .knob{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .15s}.toggle.on .track{background:var(--green)}.toggle.on .track .knob{left:18px}.bot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px}.bot-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:13px}.bot-card .bc-head{display:flex;align-items:flex-start;gap:10px}.bot-card .bc-title{font-size:15px;font-weight:700}.bot-card .bc-sub{font-size:12px;color:var(--muted);margin-top:2px}.bot-card .bc-head .spacer{flex:1}.strat-badge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:7px;text-transform:uppercase;letter-spacing:.4px}.strat-trend{background:#3d7eff29;color:var(--accent)}.strat-scalp{background:#f0a02029;color:var(--amber)}.strat-mean_reversion{background:#2ec5c529;color:var(--teal)}.strat-breakout{background:#9b7bff2e;color:var(--purple)}.bc-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.bc-stat .k{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}.bc-stat .v{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;margin-top:2px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{background:var(--panel-2);border:1px solid var(--border);border-radius:7px;padding:4px 9px;font-size:11px;color:var(--muted);display:inline-flex;align-items:center;gap:5px}.chip .ck{color:var(--faint)}.chip.cred{color:var(--green);border-color:#16c78459}.chip.nocred{color:var(--amber);border-color:#f0a0204d}.icon-btn{background:var(--panel-2);border:1px solid var(--border);color:var(--muted);border-radius:8px;padding:6px;cursor:pointer;display:flex;align-items:center}.icon-btn:hover{color:var(--text);border-color:var(--accent)}.icon-btn.danger:hover{color:var(--red);border-color:var(--red)}.live-trade{display:flex;gap:7px;flex-wrap:wrap;align-items:center;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 11px}.live-trade .lt-label{font-size:12px;color:var(--green);display:inline-flex;align-items:center;gap:5px;margin-right:2px}.live-trade .spacer{flex:1}button.btn.pos-btn{border-color:#16c78480;color:var(--green);background:transparent}button.btn.pos-btn:hover{background:var(--green-bg)}button.btn.neg-btn{border-color:#ea394380;color:var(--red);background:transparent}button.btn.neg-btn:hover{background:var(--red-bg)}.bc-actions{display:flex;gap:7px;flex-wrap:wrap;border-top:1px solid var(--border);padding-top:13px}.bc-actions .inline-sel{display:flex;gap:6px;align-items:center}.bc-actions select{width:auto;padding:6px 8px;font-size:12px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#04070cb8;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:100;overflow-y:auto}.modal{background:var(--panel);border:1px solid var(--border-2);border-radius:18px;width:min(760px,100%)}.modal-head{display:flex;align-items:center;gap:10px;padding:20px 24px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--panel);border-radius:18px 18px 0 0}.modal-head h2{font-size:17px}.modal-head .spacer{flex:1}.modal-head .x{background:none;border:none;color:var(--muted);cursor:pointer;padding:4px;display:flex;border-radius:6px}.modal-head .x:hover{background:var(--panel-2);color:var(--text)}.modal-body{padding:8px 24px 24px}.sect{border-top:1px solid var(--border);padding:18px 0 4px}.sect:first-child{border-top:none}.sect-title{font-size:12px;color:var(--accent);text-transform:uppercase;letter-spacing:.6px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:7px}.modal-foot{display:flex;align-items:center;gap:12px;padding:18px 24px;border-top:1px solid var(--border)}.modal-foot .spacer{flex:1}.note{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;font-size:12px;color:var(--muted);display:flex;gap:9px;align-items:flex-start}.note .ic{color:var(--amber);margin-top:1px}.bar{height:8px;background:var(--bg);border-radius:5px;overflow:hidden;border:1px solid var(--border)}.bar>span{display:block;height:100%;border-radius:5px}.bar>span.ok{background:var(--green)}.bar>span.warn{background:var(--amber)}.bar>span.bad{background:var(--red)}.risk-row{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.risk-row .rh{display:flex;justify-content:space-between;font-size:12px}.risk-row .rh .rk{color:var(--muted)}.toast{position:fixed;bottom:22px;right:22px;padding:13px 18px;border-radius:var(--radius-sm);max-width:440px;font-size:13px;z-index:200;border:1px solid;display:flex;gap:10px;align-items:flex-start}.toast.ok{background:var(--green-bg);border-color:#16c78466;color:var(--green)}.toast.err{background:var(--red-bg);border-color:#ea394366;color:var(--red)}.view-narrow{max-width:760px}.conn-status{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.conn-status .spacer{flex:1}.steps{margin:0;padding-left:20px;line-height:1.8;font-size:13px}.steps li{margin-bottom:6px}.steps b{color:var(--accent)}.banner{display:flex;gap:12px;align-items:flex-start;background:var(--amber-bg);border:1px solid rgba(240,160,32,.4);color:var(--text);border-radius:var(--radius);padding:14px 16px;margin-bottom:18px;font-size:13px;line-height:1.6}.banner>svg{color:var(--amber);flex-shrink:0;margin-top:1px}.banner b{color:var(--amber)}.empty{text-align:center;padding:50px 20px;color:var(--faint)}.empty .ic{font-size:0;margin-bottom:12px;display:flex;justify-content:center;color:var(--border-2)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{background:var(--panel);border:1px solid var(--border-2);border-radius:18px;padding:34px 30px;width:100%;max-width:380px;display:flex;flex-direction:column;gap:16px}.login-card .brand-c{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:4px}.login-card .logo{width:46px;height:46px;border-radius:12px;background:linear-gradient(135deg,var(--accent),var(--purple));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:20px}.login-card h1{font-size:19px;text-align:center}.login-sub{margin:0;text-align:center;color:var(--muted);font-size:13px}.login-card button.primary{background:var(--accent);border:none;color:#fff;border-radius:var(--radius-sm);padding:11px;cursor:pointer;font-size:14px;font-weight:600}.login-card button.primary:disabled{opacity:.5;cursor:not-allowed}.login-err{background:var(--red-bg);color:var(--red);border:1px solid rgba(234,57,67,.4);border-radius:var(--radius-sm);padding:9px 11px;font-size:13px}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 760px){body{font-size:13px}.shell{grid-template-columns:1fr}.menu-toggle{display:flex}.sidebar{position:fixed;top:0;bottom:0;left:0;width:252px;max-width:82vw;flex-direction:column;flex-wrap:nowrap;overflow-y:auto;border-right:1px solid var(--border-2);transform:translate(-100%);transition:transform .22s ease;z-index:60;-webkit-overflow-scrolling:touch}.sidebar.open{transform:translate(0);box-shadow:0 0 44px #0009}.menu-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#04070c99;z-index:55}.nav-item{font-size:15px;padding:12px}.topbar{padding:10px 12px;gap:10px 12px;flex-wrap:wrap}.topbar .title{font-size:15px}.topbar .divider{display:none}.acct{align-items:flex-start}.acct .v{font-size:14px}.logout-btn{padding:6px 10px}.view{padding:14px 12px}.view-head{flex-wrap:wrap;gap:10px}.panel{padding:14px;overflow-x:auto}table{font-size:12px}th,td{padding:8px}.metric .value{font-size:22px}.hero{padding:16px}.hero .top{flex-direction:column;gap:6px}.hero .eq-value{font-size:26px}.modal-overlay{padding:12px 8px}.modal{border-radius:14px}.modal-head{padding:14px 16px}.modal-body{padding:6px 16px 18px}.modal-foot{padding:14px 16px;flex-wrap:wrap}.toast{left:12px;right:12px;bottom:12px;max-width:none}}@media (max-width: 420px){.bc-stats{grid-template-columns:1fr 1fr}.metric .value{font-size:20px}.topbar .acct .k{display:none}}
