:root{--bg:#090c10;--surface:#0f1318;--surface2:#161b22;--border:#21262d;--accent:#0f8;--accent2:#00b8ff;--danger:#ff4757;--warn:#ffa502;--text:#e6edf3;--muted:#7d8590;--green:#0f8;--red:#ff4757;--mono:"Space Mono", monospace;--sans:"Syne", sans-serif}.app{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:220px;height:100vh;display:flex;position:sticky;top:0}.sidebar-logo{border-bottom:1px solid var(--border);padding:22px 20px 16px}.sidebar-logo h1{letter-spacing:-.5px;font-size:20px;font-weight:800}.sidebar-logo h1 span{color:var(--accent)}.sidebar-logo p{color:var(--muted);font-size:10px;font-family:var(--mono);margin-top:3px}.nav{flex:1;padding:14px 0;overflow-y:auto}.nav-item{cursor:pointer;color:var(--muted);border-left:2px solid #0000;align-items:center;gap:10px;padding:11px 20px;font-size:13px;font-weight:600;transition:all .15s;display:flex}.nav-item:hover{color:var(--text);background:var(--surface2)}.nav-item.active{color:var(--accent);border-left-color:var(--accent);background:#00ff8808}.sidebar-bottom{border-top:1px solid var(--border);padding:14px 20px}.user-info{color:var(--muted);font-size:10px;font-family:var(--mono);word-break:break-all;margin-bottom:8px}.btn-logout{border:1px solid var(--border);width:100%;color:var(--muted);cursor:pointer;font-size:12px;font-family:var(--sans);background:0 0;border-radius:6px;padding:8px;font-weight:600;transition:all .2s}.btn-logout:hover{border-color:var(--danger);color:var(--danger)}.main{flex:1;overflow:auto}.page{padding:28px 32px}.page-title{letter-spacing:-.5px;margin-bottom:4px;font-size:22px;font-weight:800}.page-sub{color:var(--muted);font-size:12px;font-family:var(--mono);margin-bottom:22px}.auth-wrap{background:radial-gradient(at 60% 30%,#00ff8808 0%,#0000 60%),radial-gradient(at 20% 80%,#00b8ff08 0%,#0000 50%);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;width:100%;max-width:400px;padding:44px 38px}.auth-logo{letter-spacing:-1px;margin-bottom:6px;font-size:28px;font-weight:800}.auth-logo span{color:var(--accent)}.auth-sub{color:var(--muted);font-size:12px;font-family:var(--mono);margin-bottom:32px}.auth-tabs{border:1px solid var(--border);border-radius:8px;margin-bottom:24px;display:flex;overflow:hidden}.auth-tab{text-align:center;cursor:pointer;color:var(--muted);font-size:13px;font-weight:700;font-family:var(--sans);background:0 0;border:none;flex:1;padding:10px;transition:all .2s}.auth-tab.active{background:var(--accent);color:#000}.field{margin-bottom:14px}.field label{color:var(--muted);text-transform:uppercase;letter-spacing:.8px;font-size:10px;font-weight:700;font-family:var(--mono);margin-bottom:5px;display:block}.field input{background:var(--surface2);border:1px solid var(--border);width:100%;color:var(--text);font-size:14px;font-family:var(--mono);border-radius:8px;outline:none;padding:10px 13px;transition:border .2s}.field input:focus{border-color:var(--accent)}.btn-primary{background:var(--accent);color:#000;cursor:pointer;width:100%;font-size:14px;font-weight:800;font-family:var(--sans);border:none;border-radius:8px;padding:13px;transition:opacity .2s}.btn-primary:hover{opacity:.85}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.err-msg{color:var(--danger);font-size:12px;font-family:var(--mono);text-align:center;margin-top:10px}.ok-msg{color:var(--green);font-size:12px;font-family:var(--mono);text-align:center;margin-top:10px}.btn-run{background:var(--accent);color:#000;cursor:pointer;font-size:14px;font-weight:800;font-family:var(--sans);border:none;border-radius:8px;align-items:center;gap:8px;padding:12px 26px;transition:all .2s;display:flex}.btn-run:hover{opacity:.85;transform:translateY(-1px)}.btn-run:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn-secondary{border:1px solid var(--border);color:var(--text);cursor:pointer;font-size:12px;font-weight:600;font-family:var(--sans);white-space:nowrap;background:0 0;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;transition:all .2s;display:flex}.btn-secondary:hover{border-color:var(--accent2);color:var(--accent2)}.btn-danger{border:1px solid var(--danger);color:var(--danger);cursor:pointer;font-size:12px;font-family:var(--sans);background:0 0;border-radius:6px;padding:7px 12px;font-weight:600;transition:all .2s}.btn-danger:hover{background:var(--danger);color:#fff}.btn-cancel{border:1px solid var(--border);color:var(--muted);cursor:pointer;font-size:13px;font-family:var(--sans);background:0 0;border-radius:8px;padding:11px 20px;font-weight:600}.run-bar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:24px;display:flex}.progress-bar{background:var(--border);border-radius:2px;flex:1;min-width:120px;height:3px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:2px;height:100%;transition:width .3s}.param-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.param{flex-direction:column;gap:4px;display:flex}.param label{color:var(--muted);text-transform:uppercase;letter-spacing:.7px;font-size:10px;font-weight:700;font-family:var(--mono)}.param input,.param select{background:var(--surface2);border:1px solid var(--border);color:var(--text);font-size:13px;font-family:var(--mono);border-radius:6px;outline:none;width:100%;padding:8px 10px;transition:border .2s}.param input:focus,.param select:focus{border-color:var(--accent)}.param select option{background:var(--surface2)}.bt-top-grid{grid-template-columns:1fr 1fr 1fr;gap:16px;margin-bottom:20px;display:grid}.bt-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:18px 20px}.bt-card-label{text-transform:uppercase;letter-spacing:1px;color:var(--accent);font-size:10px;font-weight:700;font-family:var(--mono);margin-bottom:12px}.risk-preview{font-size:12px;font-family:var(--mono);color:var(--muted);align-items:center;gap:6px;margin-top:10px;display:flex}.risk-preview strong{color:var(--accent)}.strat-select-list{flex-direction:column;gap:6px;max-height:160px;display:flex;overflow-y:auto}.strat-select-item{border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:8px 12px;transition:all .15s}.strat-select-item:hover{border-color:var(--accent2);background:var(--surface2)}.strat-select-item.active{border-color:var(--accent);background:#00ff8808}.strat-select-name{font-size:13px;font-weight:700}.strat-select-meta{color:var(--muted);font-size:10px;font-family:var(--mono);margin-top:2px}.upload-zone{border:2px dashed var(--border);text-align:center;cursor:pointer;border-radius:10px;padding:22px;transition:all .2s;position:relative}.upload-zone input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.upload-zone:hover,.upload-zone.drag{border-color:var(--accent);background:#00ff8808}.upload-icon{margin-bottom:8px;font-size:24px}.file-badge{font-size:12px;font-family:var(--mono);color:var(--accent);background:#00ff8812;border:1px solid #00ff8840;border-radius:8px;align-items:center;gap:8px;padding:7px 13px;display:inline-flex}.stats-grid{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:15px 17px}.stat-card.highlight{border-color:var(--accent);background:#00ff8808}.stat-card.danger{border-color:var(--danger);background:#ff475708}.stat-label{text-transform:uppercase;letter-spacing:.8px;color:var(--muted);font-size:10px;font-weight:700;font-family:var(--mono);margin-bottom:6px}.stat-value{letter-spacing:-.8px;font-size:20px;font-weight:800}.stat-value.green{color:var(--green)}.stat-value.red{color:var(--red)}.stat-value.accent{color:var(--accent2)}.stat-sub{color:var(--muted);font-size:10px;font-family:var(--mono);margin-top:3px}.tab-bar{border-bottom:1px solid var(--border);gap:2px;margin-bottom:22px;display:flex;overflow-x:auto}.tab-btn{color:var(--muted);cursor:pointer;font-size:13px;font-weight:600;font-family:var(--sans);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:9px 16px;transition:all .15s}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-btn:hover:not(.active){color:var(--text)}.chart-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:18px;padding:18px 20px}.chart-title{text-transform:uppercase;letter-spacing:.8px;color:var(--muted);font-size:11px;font-weight:700;font-family:var(--mono);margin-bottom:14px}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.table-wrap table{border-collapse:collapse;width:100%}.table-wrap th{text-align:left;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-size:10px;font-weight:700;font-family:var(--mono);border-bottom:1px solid var(--border);background:var(--surface2);white-space:nowrap;padding:10px 12px}.table-wrap td{font-size:11px;font-family:var(--mono);border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 12px}.table-wrap tr:last-child td{border-bottom:none}.table-wrap tr:hover td{background:var(--surface2)}.badge{font-size:10px;font-weight:700;font-family:var(--mono);border-radius:4px;padding:2px 7px;display:inline-block}.badge.long{color:var(--green);background:#00ff8820}.badge.short{color:var(--red);background:#ff475720}.badge.tgt{color:var(--green);background:#00ff8820}.badge.sl{color:var(--red);background:#ff475720}.badge.eod{color:var(--warn);background:#ffa50220}.filter-row{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:14px;display:flex}.filter-btn{background:var(--surface2);color:var(--muted);border:1px solid var(--border);cursor:pointer;font-size:12px;font-family:var(--mono);border-radius:6px;padding:5px 13px;font-weight:600;transition:all .15s}.filter-btn.active{background:var(--accent);color:#000;border-color:var(--accent)}.monthly-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;display:grid}.month-card{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:13px}.month-name{color:var(--muted);font-size:10px;font-weight:700;font-family:var(--mono);text-transform:uppercase;letter-spacing:.5px;margin-bottom:7px}.month-pnl{letter-spacing:-.5px;font-size:17px;font-weight:800}.month-trades{color:var(--muted);font-size:10px;font-family:var(--mono);margin-top:3px}.strategy-list{flex-direction:column;gap:10px;display:flex}.strategy-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:flex-start;gap:16px;padding:15px 18px;display:flex}.strategy-name{margin-bottom:3px;font-size:14px;font-weight:700}.strategy-meta{color:var(--muted);font-size:11px;font-family:var(--mono)}.strategy-actions{flex-wrap:wrap;flex-shrink:0;gap:7px;display:flex}.block-tag{background:var(--surface2);border:1px solid var(--border);font-size:10px;font-family:var(--mono);color:var(--muted);border-radius:4px;align-items:center;gap:3px;padding:2px 7px;display:inline-flex}.config-section{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:18px 20px}.config-section h3{text-transform:uppercase;letter-spacing:1px;color:var(--accent);font-size:10px;font-weight:700;font-family:var(--mono);margin-bottom:14px}.strategy-builder{flex-direction:column;gap:0;display:flex}.sb-section{border:1px solid var(--border);background:var(--surface);border-radius:12px;margin-bottom:14px;padding:18px 20px}.sb-label{text-transform:uppercase;letter-spacing:.8px;color:var(--accent);font-size:11px;font-weight:700;font-family:var(--mono);align-items:center;gap:10px;margin-bottom:10px;display:flex}.sb-hint{color:var(--muted);text-transform:none;letter-spacing:0;font-weight:400}.sb-count{background:var(--accent);color:#000;border-radius:10px;padding:1px 8px;font-size:10px;font-weight:800}.sb-name-input{background:var(--surface2);border:1px solid var(--border);width:100%;color:var(--text);font-size:15px;font-family:var(--sans);border-radius:8px;outline:none;padding:10px 13px;font-weight:700;transition:border .2s}.sb-name-input:focus{border-color:var(--accent)}.sb-textarea{background:var(--surface2);border:1px solid var(--border);width:100%;color:var(--text);font-size:13px;font-family:var(--mono);resize:vertical;border-radius:8px;outline:none;padding:10px 13px;line-height:1.5;transition:border .2s}.sb-textarea:focus{border-color:var(--accent)}.sb-suggestions{background:#00ff8808;border:1px solid #00ff8830;border-radius:10px;margin-bottom:14px;padding:12px 16px}.sb-suggestions-label{color:var(--accent);font-size:11px;font-weight:700;font-family:var(--mono);margin-bottom:8px}.sb-suggestions-chips{flex-wrap:wrap;gap:7px;display:flex}.suggestion-chip{background:var(--surface);border:1px solid var(--accent);font-size:12px;font-family:var(--mono);color:var(--accent);cursor:pointer;border-radius:20px;padding:5px 14px;font-weight:600;transition:all .15s}.suggestion-chip:hover{background:var(--accent);color:#000}.active-blocks-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.active-block{background:var(--surface2);border:1px solid var(--border);border-radius:10px;overflow:hidden}.active-block-header{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.active-block-name{font-size:12px;font-weight:700;font-family:var(--mono);color:var(--text)}.block-remove{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:14px;transition:all .15s}.block-remove:hover{background:var(--danger);color:#fff}.block-fields{flex-direction:column;gap:8px;padding:12px 14px;display:flex}.block-field{flex-direction:column;gap:3px;display:flex}.block-field label{color:var(--muted);text-transform:uppercase;letter-spacing:.7px;font-size:9px;font-weight:700;font-family:var(--mono)}.block-field input,.block-field select{background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:12px;font-family:var(--mono);border-radius:5px;outline:none;width:100%;padding:6px 9px;transition:border .15s}.block-field input:focus,.block-field select:focus{border-color:var(--accent)}.palette-cats{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.palette-cat{background:var(--surface2);border:1px solid var(--border);cursor:pointer;font-size:11px;font-family:var(--mono);color:var(--muted);border-radius:20px;padding:5px 12px;font-weight:600;transition:all .15s}.palette-cat.active{background:var(--accent);border-color:var(--accent);color:#000}.palette-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;display:grid}.palette-block{background:var(--surface2);border:1px solid var(--border);cursor:pointer;text-align:left;border-radius:8px;flex-direction:column;gap:2px;padding:10px 12px;transition:all .15s;display:flex}.palette-block:hover{border-color:var(--accent);background:#00ff8808}.pb-icon{font-size:16px}.pb-name{color:var(--text);font-size:12px;font-weight:700;font-family:var(--mono)}.pb-cat{color:var(--muted);font-size:9px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.5px}.loading{flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:80px 20px;display:flex}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading p{color:var(--muted);font-size:12px;font-family:var(--mono)}.empty{text-align:center;padding:60px 20px}.empty-icon{opacity:.4;margin-bottom:14px;font-size:44px}.empty h3{opacity:.6;margin-bottom:7px;font-size:15px;font-weight:700}.empty p{color:var(--muted);font-size:12px;font-family:var(--mono)}.toast{background:var(--surface);border:1px solid var(--accent);font-size:13px;font-family:var(--mono);color:var(--accent);z-index:200;border-radius:10px;padding:13px 18px;animation:.25s slideIn;position:fixed;bottom:22px;right:22px}.toast.err{border-color:var(--danger);color:var(--danger)}@keyframes slideIn{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.heatmap-wrap{overflow-x:auto}@media (width<=1100px){.bt-top-grid,.stats-grid{grid-template-columns:1fr 1fr}}@media (width<=800px){.bt-top-grid,.active-blocks-grid{grid-template-columns:1fr}.sidebar{width:180px}.page{padding:18px 14px}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#e6edf3;background:#090c10;min-height:100vh;font-family:Syne,sans-serif}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:#0f1318}::-webkit-scrollbar-thumb{background:#21262d;border-radius:3px}
