:root{--bg:#0b0e11;--surface:#1e2329;--surface2:#2b3139;--border:#2b3139;--text:#eaecef;--muted:#848e9c;--green:#0ecb81;--green-bg:#0ecb8114;--red:#f6465d;--red-bg:#f6465d14;--blue:#1e90ff;--yellow:#fcd535;--yellow-bg:#fcd5351f}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.app{max-width:1280px;margin:0 auto;padding:0 20px 40px}.app-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:4px;padding:14px 0;display:flex}.app-header h1{letter-spacing:.5px;background:linear-gradient(135deg, var(--yellow), #f0b90b);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:1.35rem;font-weight:700}.mode-indicator{background:var(--yellow-bg);color:var(--yellow);letter-spacing:1.2px;border:1px solid #fcd53533;border-radius:6px;padding:5px 14px;font-size:.7rem;font-weight:700}.mode-indicator.live{background:var(--green-bg);color:var(--green);border-color:#0ecb814d}.app-main{flex-direction:column;gap:20px;display:flex}.price-bar{border-bottom:1px solid var(--border);scrollbar-width:none;gap:0;padding:10px 0 6px;display:flex;overflow-x:auto}.price-bar::-webkit-scrollbar{display:none}.price-item{border-right:1px solid var(--border);flex-shrink:0;align-items:center;gap:10px;min-width:200px;padding:8px 20px;transition:background .15s;display:flex}.price-item:last-child{border-right:none}.price-item:hover{background:var(--surface)}.price-symbol{color:var(--text);min-width:70px;font-size:.82rem;font-weight:600}.price-value{font-variant-numeric:tabular-nums;font-size:.95rem;font-weight:600;transition:color .3s}.price-value.flash-up{color:var(--green)}.price-value.flash-down{color:var(--red)}.price-change{font-variant-numeric:tabular-nums;border-radius:3px;padding:2px 6px;font-size:.78rem;font-weight:600}.price-change.up{color:var(--green);background:var(--green-bg)}.price-change.down{color:var(--red);background:var(--red-bg)}.price-bar .live-dot{background:var(--green);border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-left:auto;animation:2s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px;overflow:hidden}.panel-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.panel-header h2{font-size:1rem;font-weight:600}.header-actions{align-items:center;gap:12px;display:flex}.last-update{color:var(--muted);font-size:.72rem}.btn{border:1px solid var(--border);background:var(--surface2);color:var(--text);cursor:pointer;border-radius:6px;padding:8px 16px;font-size:.8rem;font-weight:600;transition:all .15s}.btn:hover{background:var(--border)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-sm{padding:5px 12px;font-size:.72rem}.btn-buy{background:var(--green);color:#fff;border-color:var(--green)}.btn-buy:hover{background:#0ba16a}.btn-sell{background:var(--red);color:#fff;border-color:var(--red)}.btn-sell:hover{background:#d13a4e}.signal-grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;display:grid}.signal-card{background:var(--bg);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;padding:18px;transition:border-color .2s;display:flex}.signal-card:hover{border-color:var(--muted)}.signal-card .signal-top{justify-content:space-between;align-items:center;display:flex}.signal-symbol{font-size:.95rem;font-weight:700}.signal-price{font-variant-numeric:tabular-nums;font-size:1.1rem;font-weight:600}.signal-badge{letter-spacing:.8px;text-transform:uppercase;border-radius:4px;justify-content:center;align-items:center;padding:3px 14px;font-size:.72rem;font-weight:800;display:inline-flex}.signal-confidence{color:var(--muted);align-items:center;gap:10px;font-size:.75rem;display:flex}.confidence-bar{background:var(--surface2);border-radius:2px;flex:1;height:4px;overflow:hidden}.confidence-fill{border-radius:2px;height:100%;transition:width .5s}.signal-reason{color:var(--muted);font-size:.76rem;line-height:1.45}.signal-indicators{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.75rem}.signal-actions{gap:8px;margin-top:4px;display:flex}.signal-actions .btn{letter-spacing:.3px;border-radius:8px;flex:1;padding:9px;font-size:.82rem;font-weight:700}.modal-overlay{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:16px;width:400px;max-width:95vw;animation:.2s slideUp;overflow:hidden}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.modal-header h3{align-items:center;gap:8px;font-size:1rem;font-weight:600;display:flex}.btn-close{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:1.4rem;transition:background .15s}.btn-close:hover{background:var(--surface2);color:var(--text)}.modal-body{padding:18px 22px}.current-price{color:var(--muted);font-variant-numeric:tabular-nums;margin-bottom:16px;font-size:.82rem}.form-group{margin-bottom:14px}.form-group label{color:var(--muted);margin-bottom:6px;font-size:.78rem;font-weight:500;display:block}.form-group input,.form-group select{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);border-radius:8px;outline:none;padding:10px 12px;font-size:.9rem;transition:border-color .15s}.form-group input:focus,.form-group select:focus{border-color:var(--blue)}.notional{color:var(--muted);background:var(--bg);border-radius:8px;margin-top:4px;padding:10px 14px;font-size:.82rem}.notional strong{color:var(--text)}.preview-result{border-radius:8px;margin-top:12px;padding:10px 14px;font-size:.8rem}.preview-result.accepted{background:var(--green-bg);color:var(--green)}.preview-result.rejected{background:var(--red-bg);color:var(--red)}.preview-result ul{margin-top:4px;padding-left:18px}.error-msg{color:var(--red);margin-top:10px;font-size:.8rem}.success-msg{color:var(--green);margin-top:10px;font-size:.8rem}.modal-footer{border-top:1px solid var(--border);gap:10px;padding:14px 22px 18px;display:flex}.modal-footer .btn{border-radius:8px;flex:1;padding:11px;font-size:.88rem}.orders-table-wrapper{overflow-x:auto}.orders-table{border-collapse:collapse;width:100%;min-width:700px}.orders-table th{text-align:left;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 14px;font-size:.7rem;font-weight:600}.orders-table td{white-space:nowrap;font-variant-numeric:tabular-nums;border-bottom:1px solid #2b313980;padding:10px 14px;font-size:.82rem}.orders-table tbody tr{transition:background .1s}.orders-table tbody tr:hover{background:#ffffff05}.orders-table .bold{font-weight:600}.side-tag,.status-tag,.mode-tag{letter-spacing:.4px;border-radius:4px;padding:2px 8px;font-size:.7rem;font-weight:700;display:inline-block}.side-tag.buy{background:var(--green-bg);color:var(--green)}.side-tag.sell{background:var(--red-bg);color:var(--red)}.status-tag.filled{background:var(--green-bg);color:var(--green)}.status-tag.rejected{background:var(--red-bg);color:var(--red)}.status-tag.pending{color:var(--yellow)}.mode-tag.paper{background:var(--yellow-bg);color:var(--yellow)}.mode-tag.live{background:var(--green-bg);color:var(--green)}.empty-msg{color:var(--muted);text-align:center;padding:30px 0;font-size:.85rem}.loading{color:var(--muted);text-align:center;padding:24px 0;font-size:.85rem}.trading-section{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:0;overflow:hidden}.trading-symbol-bar{border-bottom:1px solid var(--border);align-items:center;gap:0;padding:0;display:flex}.symbol-tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:12px 18px;font-size:.82rem;font-weight:600;transition:all .15s}.symbol-tab:hover{color:var(--text)}.symbol-tab.active{color:var(--yellow);border-bottom-color:var(--yellow)}.symbol-price{color:var(--text);font-variant-numeric:tabular-nums;margin-left:auto;padding:0 18px;font-size:1.1rem;font-weight:700}.order-type-tabs{border-bottom:1px solid var(--border);gap:0;display:flex}.order-type-tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 20px;font-size:.78rem;font-weight:600;transition:all .15s}.order-type-tab:hover{color:var(--text)}.order-type-tab.active{color:var(--text);border-bottom-color:var(--text)}.trade-error{background:var(--red-bg);color:var(--red);border-radius:6px;margin:12px 20px 0;padding:8px 14px;font-size:.8rem}.trade-success{background:var(--green-bg);color:var(--green);border-radius:6px;margin:12px 20px 0;padding:8px 14px;font-size:.8rem}.position-planner{border:1px solid var(--border);background:var(--surface2);border-radius:10px;margin:14px 20px;padding:14px}.position-planner-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.position-planner-header h3{margin:0;font-size:.9rem}.position-planner-header span{color:var(--muted);font-size:.76rem;font-weight:600}.position-planner-side-toggle{gap:8px;margin-bottom:10px;display:flex}.position-planner-side-toggle button{border:1px solid var(--border);background:var(--bg);color:var(--muted);cursor:pointer;border-radius:6px;flex:1;padding:8px 10px;font-size:.75rem;font-weight:700}.position-planner-side-toggle button.active.long{color:var(--green);background:#0eb27614;border-color:#0eb27699}.position-planner-side-toggle button.active.short{color:var(--red);background:#eb455a14;border-color:#eb455a99}.position-planner-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.position-planner-grid label{color:var(--muted);flex-direction:column;gap:4px;font-size:.7rem;display:flex}.position-planner-grid input{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;outline:none;padding:8px 10px;font-size:.8rem}.position-planner-grid input:focus{border-color:var(--blue)}.position-planner-risk-row{gap:8px;margin-top:10px;display:flex}.risk-mode-toggle{gap:6px;display:flex}.risk-mode-toggle button{border:1px solid var(--border);background:var(--bg);color:var(--muted);cursor:pointer;border-radius:6px;padding:7px 10px;font-size:.73rem;font-weight:700}.risk-mode-toggle button.active{color:var(--text);border-color:var(--blue)}.position-planner-risk-row input{border:1px solid var(--border);background:var(--bg);width:120px;color:var(--text);border-radius:6px;outline:none;padding:7px 10px;font-size:.8rem}.planner-warning{color:var(--red);background:#eb455a1a;border-radius:6px;margin-top:10px;padding:7px 10px;font-size:.74rem}.position-planner-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.position-planner-stats>div{background:var(--bg);color:var(--muted);border:1px solid #2b313999;border-radius:6px;justify-content:space-between;align-items:center;padding:6px 8px;font-size:.73rem;display:flex}.position-planner-stats strong{color:var(--text);font-variant-numeric:tabular-nums}.position-planner-stats .pnl-positive{color:var(--green)}.position-planner-stats .pnl-negative{color:var(--red)}.position-planner-actions{gap:8px;margin-top:10px;display:flex}.position-planner-actions .btn{flex:1}.position-planner-actions .btn:disabled{opacity:.5;cursor:not-allowed}.trade-panels{grid-template-columns:1fr 1fr;gap:0;display:grid}.trade-panel{padding:18px 20px}.trade-panel:first-child{border-right:1px solid var(--border)}.panel-side-label{margin-bottom:14px;font-size:.88rem;font-weight:700}.panel-side-label.buy{color:var(--green)}.panel-side-label.sell{color:var(--red)}.trade-field{margin-bottom:10px}.trade-field label{color:var(--muted);margin-bottom:4px;font-size:.72rem;font-weight:500;display:block}.trade-input-row{background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;transition:border-color .15s;display:flex;overflow:hidden}.trade-input-row:focus-within{border-color:var(--blue)}.trade-input-row input{color:var(--text);font-variant-numeric:tabular-nums;background:0 0;border:none;outline:none;flex:1;padding:9px 12px;font-size:.85rem}.trade-input-row input::placeholder{color:var(--muted)}.input-suffix{color:var(--muted);white-space:nowrap;padding:0 12px;font-size:.72rem;font-weight:600}.trade-input-row.market-price{color:var(--muted);padding:9px 12px;font-size:.85rem}.pct-row{gap:6px;margin-bottom:10px;display:flex}.pct-btn{border:1px solid var(--border);background:var(--bg);color:var(--muted);cursor:pointer;border-radius:4px;flex:1;padding:5px;font-size:.68rem;font-weight:600;transition:all .15s}.pct-btn:hover{background:var(--surface2);color:var(--text);border-color:var(--muted)}.trade-info{border-top:1px solid #2b313980;margin:14px 0;padding:10px 0}.info-row{color:var(--muted);justify-content:space-between;align-items:center;padding:3px 0;font-size:.72rem;display:flex}.info-row span:last-child{color:var(--text);font-variant-numeric:tabular-nums;font-weight:500}.trade-submit-btn{cursor:pointer;letter-spacing:.3px;border:none;border-radius:8px;width:100%;padding:12px;font-size:.88rem;font-weight:700;transition:all .15s}.trade-submit-btn:disabled{opacity:.5;cursor:not-allowed}.trade-submit-btn.buy{background:var(--green);color:#fff}.trade-submit-btn.buy:hover:not(:disabled){background:#0ba16a}.trade-submit-btn.sell{background:var(--red);color:#fff}.trade-submit-btn.sell:hover:not(:disabled){background:#d13a4e}.trade-history{border-top:1px solid var(--border);padding:18px 20px}.trade-history .panel-header{margin-bottom:12px}.role-tag{border-radius:4px;padding:2px 8px;font-size:.7rem;font-weight:600;display:inline-block}.role-tag.maker{color:var(--blue);background:#1e90ff14}.role-tag.taker{color:var(--muted);background:#848e9c14}.bot-control-panel{padding:14px 16px}.bot-control-row{grid-template-columns:auto minmax(220px,1.2fr) minmax(120px,.7fr) minmax(140px,.8fr) minmax(140px,.8fr) auto;align-items:end;gap:10px;display:grid}.bot-toggle-group{align-items:center;gap:8px;display:flex}.bot-state-pill{letter-spacing:.4px;border:1px solid #0000;border-radius:6px;padding:6px 10px;font-size:.72rem;font-weight:700}.bot-state-pill.is-active{color:var(--green);background:var(--green-bg);border-color:#0ecb8159}.bot-state-pill.is-armed{color:var(--yellow);background:var(--yellow-bg);border-color:#fcd53559}.bot-state-pill.is-paused{color:#f59e0b;background:#f59e0b29;border-color:#f59e0b59}.bot-state-pill.is-killed{color:var(--red);background:var(--red-bg);border-color:#f6465d59}.bot-state-pill.is-off{color:var(--muted);background:#848e9c1f;border-color:#848e9c40}.bot-toggle-btn{min-width:70px}.bot-amount-group,.bot-select-group{flex-direction:column;gap:4px;display:flex}.bot-amount-group label,.bot-select-group label{color:var(--muted);font-size:.72rem}.bot-amount-input-wrap{gap:8px;display:flex}.bot-amount-input-wrap input,.bot-select-group select{border:1px solid var(--border);background:var(--bg);width:100%;height:36px;color:var(--text);border-radius:8px;outline:none;padding:0 10px;font-size:.86rem}.bot-amount-input-wrap input:focus,.bot-select-group select:focus{border-color:var(--blue)}.bot-amount-group small{color:var(--muted);font-size:.7rem}.bot-action-group{justify-content:flex-end;gap:8px;display:flex}.bot-control-meta{color:var(--muted);flex-wrap:wrap;justify-content:flex-start;gap:10px;margin-top:10px;font-size:.72rem;display:flex}.bot-side-layout{justify-content:flex-end;display:flex}.bot-side-column{width:100%;max-width:460px;padding:14px 16px}.bot-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.bot-stat-card{border:1px solid var(--border);background:var(--bg);border-radius:8px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}.bot-stat-card span{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-size:.68rem}.bot-stat-card strong{color:var(--text);font-variant-numeric:tabular-nums;font-size:.95rem}.bot-stat-card.success strong{color:var(--green)}.bot-stat-card.loss strong{color:var(--red)}.bot-stat-card.blocked strong{color:var(--yellow)}.bot-section{margin-top:14px}.bot-section h3{color:var(--muted);text-transform:uppercase;letter-spacing:.7px;margin-bottom:8px;font-size:.78rem}.bot-assets-list,.bot-history-list{flex-direction:column;gap:8px;max-height:300px;padding-right:2px;display:flex;overflow:auto}.bot-assets-row,.bot-history-row{border:1px solid var(--border);background:var(--bg);border-radius:8px;padding:8px 10px}.bot-assets-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.bot-assets-symbol{font-size:.84rem;font-weight:700}.bot-assets-qty{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:2px;font-size:.72rem}.bot-assets-values{text-align:right;font-variant-numeric:tabular-nums;font-size:.82rem}.bot-assets-values small{color:var(--muted);margin-top:2px;font-size:.68rem;display:block}.bot-history-top{align-items:center;gap:6px;margin-bottom:5px;display:flex}.bot-history-pill{letter-spacing:.4px;border-radius:999px;padding:2px 8px;font-size:.66rem;font-weight:700;display:inline-block}.bot-history-pill.is-success{color:var(--green);background:var(--green-bg)}.bot-history-pill.is-loss{color:var(--red);background:var(--red-bg)}.bot-history-pill.is-blocked{color:var(--yellow);background:var(--yellow-bg)}.bot-history-symbol{font-size:.78rem;font-weight:600}.bot-history-side{color:var(--muted);font-size:.72rem;font-weight:600}.bot-history-meta{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;gap:8px;margin-bottom:4px;font-size:.68rem;display:flex}.bot-history-message{color:var(--text);font-size:.74rem;line-height:1.35}@media (width<=900px){.bot-side-layout{justify-content:stretch}.bot-side-column{max-width:none}}@media (width<=700px){.bot-control-row{grid-template-columns:1fr;align-items:stretch}.bot-action-group{flex-wrap:wrap;justify-content:flex-start}.bot-control-meta{flex-direction:column;gap:4px}.trade-panels{grid-template-columns:1fr}.trade-panel:first-child{border-right:none;border-bottom:1px solid var(--border)}.signal-grid{grid-template-columns:1fr}.position-planner-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.position-planner-stats{grid-template-columns:1fr}.position-planner-risk-row{flex-direction:column}.position-planner-risk-row input{width:100%}}
