.appShell{grid-template:"north north""west center"minmax(0,1fr)"south south"/178px minmax(0,1fr);max-width:none;height:100vh;margin:0;padding:0;display:grid;overflow:hidden}.borderNorth{grid-area:north}.borderWest{background:#fff;border-right:1px solid #dfe6eb;grid-area:west;padding:10px 8px;overflow:auto}.borderCenter{grid-area:center;padding:0;overflow:auto}.borderSouth{grid-area:south}.sideMenu{gap:4px;display:grid}.sideMenuItem{color:#344650;text-align:left;background:0 0;border:0;border-radius:6px;justify-content:flex-start;align-items:center;gap:8px;width:100%;min-height:32px;padding:6px 8px;font-size:13px;font-weight:600;display:flex}.sideMenuItem:hover,.sideMenuItem.active{color:#146c5f;background:#edf3f7}.tabWorkspace{grid-template-rows:auto minmax(0,1fr);min-height:100%;display:grid}.tabBar{background:#fff;border-bottom:1px solid #dfe6eb;align-items:center;gap:4px;padding:8px 10px 0;display:flex;overflow-x:auto}.tabButton{color:#43525f;white-space:nowrap;background:#f7f9fb;border:1px solid #dfe6eb;border-bottom:0;border-radius:6px 6px 0 0;min-height:30px;padding:5px 10px;font-size:12px;font-weight:650}.tabButton.active{color:#146c5f;background:#f5f7f9}.tabPane{padding:12px;overflow:auto}.contentBand{margin-bottom:12px}@media (width<=980px){.appShell{grid-template:"north""west""center"minmax(0,1fr)"south"/1fr}.borderWest{border-bottom:1px solid #dfe6eb;border-right:0;padding:10px 12px}.borderCenter{padding:0}.sideMenu{gap:6px;display:flex;overflow-x:auto}.sideMenuItem{flex:none;width:auto}.tabPane{padding:10px}}:root{color:#17202a;background:#f5f7f9;font-family:Inter,Microsoft YaHei,PingFang SC,system-ui,sans-serif;font-size:14px;line-height:1.42}*{box-sizing:border-box}body{margin:0}button{color:#fff;cursor:pointer;font:inherit;background:#146c5f;border:1px solid #146c5f;border-radius:6px;align-items:center;gap:6px;min-height:32px;padding:6px 10px;font-size:13px;font-weight:650;display:inline-flex}button.secondary{color:#263238;background:#fff;border-color:#ccd5dc}button.tiny{min-height:26px;padding:3px 8px;font-size:12px}button.linkButton{color:#146c5f;background:0 0;border:0;min-height:auto;padding:0;font-weight:750}select{color:#263238;font:inherit;background:#fff;border:1px solid #ccd5dc;border-radius:6px;min-height:32px;padding:5px 8px}input{color:#263238;font:inherit;background:#fff;border:1px solid #ccd5dc;border-radius:6px;width:100%;min-height:32px;padding:5px 8px}button:disabled{cursor:not-allowed;opacity:.65}button svg,.sectionTitle svg,.statusLine svg{width:16px;height:16px}.topbar{background:#fff;border-bottom:1px solid #dfe6eb;justify-content:space-between;align-items:center;gap:16px;min-height:58px;margin-bottom:0;padding:9px 12px;display:flex}h1{margin:0 0 3px;font-size:20px;line-height:1.2}p{margin:0}.topbar p,.metricLabel,.empty,td,.item p{color:#66727d}.topbar p{font-size:12px}.actions{white-space:nowrap;gap:8px;display:flex}.headerSchedule{color:#41515f;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;font-size:12px;display:flex}.headerSchedule span{white-space:nowrap;background:#eef4f2;border:1px solid #d4e2de;border-radius:6px;padding:4px 7px}.statusLine{color:#195f52;background:#e9f3ef;border:0;border-top:1px solid #c4dfd5;border-radius:0;align-items:center;gap:8px;margin-bottom:0;padding:7px 10px;font-size:13px;display:flex}.metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px;display:grid}.metric,.section{background:#fff;border:1px solid #dfe6eb;border-radius:8px}.metric{align-items:center;gap:9px;min-height:66px;padding:10px;display:flex}.metricIcon{color:#27465a;background:#edf3f7;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.metricIcon svg{width:18px;height:18px}.metricValue{color:#101820;font-size:17px;font-weight:750}.grid{gap:12px;margin-bottom:12px;display:grid}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.chartStrategy{grid-template-columns:minmax(0,1.45fr) minmax(360px,.75fr)}.section{min-height:220px;padding:10px}.sectionTitle{border-bottom:1px solid #edf1f4;align-items:center;gap:6px;margin-bottom:8px;padding-bottom:7px;display:flex}h2{margin:0;font-size:14px}.tableWrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;white-space:nowrap;border-bottom:1px solid #edf1f4;padding:6px;font-size:12px}th{color:#2d3a45;font-weight:700}.reasonCell{white-space:normal;max-width:460px}.list,.strategySelectPanel{gap:8px;display:grid}.strategyControls{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.strategyControls select{width:100%}.strategyDetail{background:#f7f9fb;border:1px solid #dfe6eb;border-radius:6px;gap:6px;padding:9px;display:grid}.strategyDetail h3{color:#0f1d2a;margin:0;font-size:14px;line-height:1.25}.strategyDetail strong{color:#006b63;font-size:12px}.strategyDetail p{color:#516170;margin:0;font-size:12px}.positionOverview,.positionCharts{gap:10px;display:grid}.positionCharts{grid-template-columns:repeat(2,minmax(0,1fr))}.positionChartCard{background:#f7f9fb;border:1px solid #edf1f4;border-radius:6px;gap:6px;padding:8px;display:grid}.positionChartHead{justify-content:space-between;align-items:center;gap:8px;display:flex}.positionChartHead div{gap:2px;min-width:0;display:grid}.positionChartHead strong{color:#17202a;font-size:13px}.positionChartHead span{color:#66727d;font-size:11px}.positionChartHead b{white-space:nowrap;font-size:12px}.positionPnlChart{background:#fff;border:1px solid #edf1f4;border-radius:6px;width:100%;display:block;overflow:visible}.positionPnlChart text{fill:#66727d;font-size:11px}.zeroLine{stroke:#d9e1e7;stroke-dasharray:4 4;stroke-width:1px}.pnlLineUp,.pnlLineDown{fill:none;stroke-width:2px}.pnlLineUp{stroke:#d85c4a}.pnlLineDown{stroke:#1b8a6b}.pnlOpenPoint{fill:#f8fbff;stroke:#52677a;stroke-width:1.2px}.pnlClosePoint{fill:#fff;stroke:currentColor;stroke-width:1.3px}.pnlLineUp+.pnlOpenPoint,.pnlLineUp+.pnlOpenPoint~.pnlOpenPoint,.pnlLineUp+.pnlOpenPoint~.pnlClosePoint{color:#d85c4a}.pnlLineDown+.pnlOpenPoint,.pnlLineDown+.pnlOpenPoint~.pnlOpenPoint,.pnlLineDown+.pnlOpenPoint~.pnlClosePoint{color:#1b8a6b}.purchaseMarker{cursor:pointer}.purchaseMarker circle{fill:#146c5f;stroke:#fff;stroke-width:2px}.purchaseTooltipObject{opacity:0;pointer-events:none;transition:opacity .12s}.purchaseMarker:hover .purchaseTooltipObject,.purchaseMarker:focus .purchaseTooltipObject{opacity:1}.purchaseTooltip{color:#fff;background:#101820f2;border-radius:6px;gap:2px;padding:7px 8px;font-size:11px;line-height:1.35;display:grid}.purchaseTooltip strong{font-size:12px}.llmStrategyGroups{gap:10px;display:grid}.llmStrategyGroup{background:#f7f9fb;border:1px solid #edf1f4;border-radius:6px;gap:6px;padding:8px;display:grid}.llmStrategyHead{justify-content:space-between;align-items:center;gap:8px;display:flex}.llmStrategyHead strong{color:#17202a;font-size:13px}.llmStrategyHead span{color:#66727d;font-size:12px}.duplicateRecommendation td{color:#8f1f12;background:#fff0ee}.duplicateRecommendation .linkButton{color:#b42318}.strategyCandidates{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.candidatePill{color:#263238;background:#fff;border-color:#d8e1e8;gap:6px;min-height:26px;padding:3px 7px;display:inline-flex}.candidatePill span{font-weight:700}.candidatePill small{color:#006b63;font-size:11px}.item{border:1px solid #edf1f4;border-radius:6px;padding:9px}.insightList{gap:8px;max-height:360px;display:grid;overflow:auto}.insightItem{border:1px solid #edf1f4;border-radius:6px;gap:6px;padding:9px;display:grid}.insightHead{justify-content:space-between;align-items:center;gap:8px;display:flex}.insightHead span,.insightRationale{color:#66727d;font-size:12px}.insightItem h3{color:#17202a;margin:0;font-size:13px;line-height:1.3}.insightItem p{color:#516170;margin:0;font-size:12px}.itemHead,.riskSummary{justify-content:space-between;align-items:center;gap:8px;display:flex}.item p{margin-top:6px;font-size:12px}.signalMetrics{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.signalMetrics span{color:#355061;background:#eef4f7;border-radius:999px;padding:2px 6px;font-size:11px}.riskSummary{justify-content:flex-start;margin-bottom:8px}.ok,.warn{align-items:center;gap:6px;display:inline-flex}.ok{color:#157347}.warn{color:#ad5b00}.badge{border-radius:999px;padding:2px 6px;font-size:11px}.okBadge{color:#157347;background:#e6f4ee}.warnBadge{color:#9a4f00;background:#fff3dc}.inlineError{color:#8a4300;background:#fff3dc;border:1px solid #f2c27a;border-radius:6px;margin-bottom:8px;padding:8px 10px;font-size:12px}.empty{justify-content:center;align-items:center;min-height:110px;display:flex}.backtest,.statusGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.statusCard{background:#f7f9fb;border:1px solid #edf1f4;border-radius:6px;gap:4px;padding:8px;display:grid}.statusCard span{color:#66727d;font-size:12px}.okText{color:#157347}.warnText{color:#ad5b00}.brokerList,.queueActions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.list.compact{max-height:230px;overflow:auto}.syncRuns{gap:6px;max-height:160px;margin-top:10px;display:grid;overflow:auto}.syncRun{background:#f7f9fb;border:1px solid #edf1f4;border-radius:6px;padding:8px}.syncRun p{color:#66727d;margin-top:5px;font-size:12px}.smallEmpty{min-height:60px}.report{color:#263238;background:#f7f9fb;border:1px solid #edf1f4;border-radius:6px;max-height:170px;margin:0;padding:9px;font-size:12px;overflow:auto}.chartToolbar{align-items:center;gap:8px;margin-bottom:8px;display:flex}.chartBox{background:#f7f9fb;border:1px solid #edf1f4;border-radius:6px;overflow:hidden}.chartBox svg{width:100%;height:auto;display:block}.axis{stroke:#c7d0d8;stroke-width:1px}.candleUp{fill:#d85c4a;stroke:#d85c4a;stroke-width:1.4px}.candleDown{fill:#1b8a6b;stroke:#1b8a6b;stroke-width:1.4px}.volumeUp{fill:#d85c4a57}.volumeDown{fill:#1b8a6b57}.ma5{stroke:#2d6cdf;stroke-width:2px}.ma20,.equityLine{stroke:#9a6b18;stroke-width:2px}.equityLine{stroke:#146c5f}.chartLabel{fill:#4c5b66;font-size:12px}.barTrack{background:#e8eef2;border-radius:999px;height:8px;margin-top:8px;overflow:hidden}.barTrack span{background:#146c5f;height:100%;display:block}.tradeSummary,.rankToolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.reportToolbar{align-items:flex-end}.reportDateField{gap:4px;min-width:168px;display:grid}.reportDateField span{color:#66727d;font-size:12px}.reportDateField input{width:auto;min-width:168px}.bestStrategy{background:#f7f9fb;border:1px solid #edf1f4;border-radius:6px;grid-template-columns:76px 1fr auto;align-items:center;gap:4px;margin-bottom:8px;padding:8px;display:grid}.bestStrategy span{color:#66727d;font-size:12px}.bestStrategy strong{color:#17202a}.bestStrategy b{color:#146c5f}.reportGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.reportGrid div{background:#f7f9fb;border:1px solid #edf1f4;border-radius:6px;gap:3px;padding:8px;display:grid}.reportGrid span{color:#66727d;font-size:12px}.dailyReport{gap:8px;display:grid}.compactReport{grid-template-columns:repeat(4,minmax(0,1fr))}.reportStack{gap:12px;display:grid}.weeklyStrategyList{margin-top:10px}.backtestForm{grid-template-columns:1.2fr 1.6fr 1fr 1fr auto;gap:8px;margin-bottom:8px;display:grid}.backtestForm label{gap:4px;display:grid}.backtestForm label span{color:#66727d;font-size:12px}@media (width<=980px){.topbar{flex-direction:column;align-items:stretch}.actions,.headerSchedule{flex-wrap:wrap;justify-content:flex-start}.metrics,.grid.chartStrategy,.grid.two,.positionCharts,.reportGrid{grid-template-columns:1fr}.reportDateField,.reportDateField input{width:100%;min-width:0}.backtestForm{grid-template-columns:1fr}}
