:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{margin:0}:root{--bg:#0d1117;--panel:#161b22;--border:#21262d;--text:#e6edf3;--muted:#8b949e;--green:#3fb950;--red:#f85149;--amber:#d29922;--blue:#58a6ff}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:SF Mono,ui-monospace,Cascadia Code,Menlo,Consolas,monospace;font-size:13px}.dash{flex-direction:column;gap:16px;max-width:1280px;margin:0 auto;padding:20px;display:flex}.dash.loading{min-height:100vh;color:var(--muted);justify-content:center;align-items:center}.spinner{border:3px solid var(--border);border-top-color:var(--blue);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dash-header{justify-content:space-between;align-items:center;display:flex}.brand h1{letter-spacing:.5px;margin:0;font-size:18px}.brand .sub{color:var(--muted);font-size:11px}.relay{border:1px solid var(--border);border-radius:20px;align-items:center;gap:8px;padding:6px 12px;font-size:12px;display:flex}.relay .dot{border-radius:50%;width:8px;height:8px}.relay-ok{color:var(--green)}.relay-ok .dot{background:var(--green);box-shadow:0 0 6px var(--green)}.relay-down{color:var(--red)}.relay-down .dot{background:var(--red)}.cards{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.card{background:var(--panel);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:4px;padding:14px 16px;display:flex}.card .label{color:var(--muted);text-transform:uppercase;letter-spacing:1px;font-size:11px}.card .value{font-size:20px;font-weight:600}.card .hint{color:var(--muted);font-size:11px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px 16px;overflow-x:auto}.panel h2{text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin:0 0 10px;font-size:13px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(460px,1fr));gap:16px;display:grid}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);padding:4px 8px;font-size:11px;font-weight:500}td{border-bottom:1px solid var(--border);white-space:nowrap;padding:6px 8px}tr:last-child td{border-bottom:none}.sym{font-weight:600}.meta{color:var(--muted);font-size:11px}.empty{color:var(--muted);margin:4px 0;font-style:italic}.pnl-pos{color:var(--green)}.pnl-neg{color:var(--red)}.pnl-flat{color:var(--muted)}.chip{border:1px solid var(--border);color:var(--muted);border-radius:10px;padding:1px 8px;font-size:11px;display:inline-block}.chip-active,.chip-completed,.chip-approved,.chip-executed{color:var(--green);border-color:var(--green)}.chip-paper_only,.chip-open,.chip-generated,.chip-placed,.chip-pending{color:var(--blue);border-color:var(--blue)}.chip-paused,.chip-expired,.chip-cancelled{color:var(--amber);border-color:var(--amber)}.chip-rejected,.chip-disabled,.chip-exit{color:var(--red);border-color:var(--red)}.alerts .alert{border:1px solid var(--border);border-left-width:3px;border-radius:6px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:8px 12px;display:flex}.alert.sev-critical{border-left-color:var(--red)}.alert.sev-warning{border-left-color:var(--amber)}.alert.sev-info{border-left-color:var(--blue)}.alert p{color:var(--muted);margin:2px 0;font-size:12px}.alert strong{font-size:12px}.header-right{align-items:center;gap:12px;display:flex}.mode-switch{border:1px solid var(--border);border-radius:20px;display:flex;overflow:hidden}.mode-btn{color:var(--muted);background:0 0;border:none;border-radius:0;padding:6px 12px;font-size:11px}.mode-switch.mode-normal .mode-btn.active{color:var(--green);background:#3fb95026}.mode-switch.mode-exit_only .mode-btn.active{color:var(--amber);background:#d2992226}.mode-switch.mode-halted .mode-btn.active{color:var(--red);background:#f8514926}.equity-svg{width:100%;height:120px;display:block}.equity-zero{stroke:var(--border);stroke-width:1px;stroke-dasharray:4 4}.equity-line{stroke-width:2px}.equity-line.pos{stroke:var(--green)}.equity-line.neg{stroke:var(--red)}.equity-meta{justify-content:space-between;margin-top:6px;display:flex}button{background:var(--border);color:var(--text);cursor:pointer;border:1px solid #30363d;border-radius:6px;padding:5px 12px;font-family:inherit;font-size:12px}button:hover{background:#30363d}button.mini{padding:2px 8px;font-size:11px}.panel-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.panel-head h2{margin:0}.trade-form{flex-wrap:wrap;align-items:stretch;gap:8px;display:flex}.trade-form input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;flex:130px;min-width:0;padding:8px 10px;font-family:inherit;font-size:13px}.trade-form input:focus{border-color:var(--blue);outline:none}.side-toggle{border:1px solid var(--border);border-radius:6px;flex:none;display:flex;overflow:hidden}.side-toggle button{background:0 0;border:none;border-radius:0;padding:8px 14px}.side-toggle button.active{color:var(--green);background:#3fb95033}.side-toggle.side-sell button.active{color:var(--red);background:#f8514933}button.submit{flex:none;padding:8px 16px;font-weight:600}button.submit.buy{color:var(--green);border-color:var(--green);background:#3fb95033}button.submit.sell{color:var(--red);border-color:var(--red);background:#f8514933}.trade-status{color:var(--amber);margin:8px 0 4px;font-size:12px}button.mini.danger{color:var(--red);border-color:var(--red);background:0 0}button.mini.danger:hover{background:#f8514926}@media (width<=640px){.dash{padding:12px;padding-top:calc(12px + env(safe-area-inset-top));padding-bottom:calc(12px + env(safe-area-inset-bottom));gap:12px}.dash-header{flex-direction:column;align-items:stretch;gap:10px}.header-right{justify-content:space-between}.cards{grid-template-columns:1fr 1fr}.card .value{font-size:17px}.grid-2{grid-template-columns:1fr}.panel{padding:12px}table{min-width:430px}td,th{padding:6px;font-size:12px}.alerts .alert{flex-direction:column;align-items:stretch;gap:8px}.alerts .alert button{align-self:flex-end}.mode-btn{flex:1}}
