:root{color:#1d1d1f;background:#f5f5f7;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{min-height:42px;border:0;border-radius:10px;background:#0071e3;color:#fff;font-weight:650}button:disabled{opacity:.55}input,select,textarea{width:100%;min-height:42px;border:1px solid #d2d2d7;border-radius:10px;padding:9px 11px;background:#ffffffeb;color:#1d1d1f}textarea{min-height:72px;resize:vertical}.loginShell{display:grid;place-items:center;min-height:100vh;padding:18px}.loginCard{width:min(100%,760px);border:1px solid #e5e5ea;border-radius:18px;background:#ffffffdb;box-shadow:0 18px 45px #0000000f;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.panel{width:100%;border:1px solid #e5e5ea;border-radius:18px;background:#ffffffdb;box-shadow:0 18px 45px #0000000f;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.loginCard{display:grid;gap:14px;padding:22px}.brand{display:flex;align-items:center;gap:12px}.brand h1{margin:0;font-size:24px;letter-spacing:0}.brand p,.muted{margin:4px 0 0;color:#6e6e73;font-size:13px}.brand.small h1{font-size:22px}.app{width:min(100%,1180px);margin:0 auto;padding:18px clamp(12px,2vw,24px) 42px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.ghost{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border:1px solid #d2d2d7;background:#ffffffb8;color:#1d1d1f}.mainTabs{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin:14px 0 16px;padding:5px;border:1px solid rgba(210,210,215,.9);border-radius:14px;background:#ffffffb8}.mainTabs button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:42px;border-radius:10px;background:transparent;color:#6e6e73}.mainTabs button.active{background:#1d1d1f;color:#fff}.panel{margin:12px 0;padding:clamp(16px,2vw,24px)}.panelTitle{display:flex;align-items:center;gap:9px;margin-bottom:12px}.inlineTitle{margin-bottom:0}.panel h2{margin:0;font-size:18px}.panelHeaderRow{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.buttonRow{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.primaryGhost{border-color:#0071e347;background:#0071e314;color:#0057b8}.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0 10px}.tabs button{min-height:36px;border:1px solid #d2d2d7;background:#fbfbfd;color:#6e6e73}.tabs button.active{border-color:#1d1d1f;background:#1d1d1f;color:#fff}.panel h3{margin:12px 0 6px;font-size:14px}.subPanel{margin-top:16px;padding-top:16px;border-top:1px solid #e8e8ed}.stack{display:grid;gap:10px}.queryRow{display:grid;grid-template-columns:minmax(0,1fr) 120px 88px;gap:9px}.error,.success{border-radius:10px;padding:10px 12px;font-size:14px}.error{background:#fff1f2;color:#be123c}.success{margin-top:10px;background:#ecfdf3;color:#067647}.tableWrap{width:100%;overflow-x:auto}.dataTable{width:100%;border-collapse:collapse;min-width:980px}.dataTable th,.dataTable td{padding:10px 8px;border-bottom:1px solid #ececf1;text-align:left;vertical-align:top;font-size:13px}.dataTable th{color:#6e6e73;font-weight:600}.cellSub{margin-top:2px;color:#6e6e73;font-size:12px}.emptyCell{color:#6e6e73}.resultBox{margin-top:12px;padding:12px;border-radius:14px;background:#fbfbfd;line-height:1.55}.resultBox p{margin:7px 0;color:#424245}.history{display:grid;gap:8px;margin-top:12px}.historyItem{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:40px;padding:8px 0;border-top:1px solid #e8e8ed;color:#424245;font-size:14px}.historyItem div{display:grid;gap:4px}.historyItem strong{color:#1d1d1f}.historyItem span{color:#667085}.notice{margin:10px 0;border-radius:10px;padding:10px 12px;background:#fff7ed;color:#9a3412;font-size:14px}.jsonEditor{min-height:320px;margin:12px 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.55}.checkRow{display:flex;align-items:center;gap:9px;margin:8px 0 12px;color:#424245;font-size:14px}.checkRow input{width:18px;min-height:18px}.positionItem{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;min-height:54px;padding:9px 0;border-top:1px solid #edf1f5}.positionItem div{display:grid;gap:4px}.positionItem div:last-child{text-align:right}.positionItem strong{color:#111827}.positionItem span{color:#667085;font-size:13px}.positionTableWrap{overflow-x:auto;border:1px solid #e8e8ed;border-radius:14px}.positionTable{width:100%;min-width:1320px;border-collapse:collapse;background:#fff}.positionTable th,.positionTable td{padding:10px;border-bottom:1px solid #edf1f5;text-align:right;vertical-align:top;font-size:13px}.positionTable th:first-child,.positionTable td:first-child{text-align:left;position:sticky;left:0;background:#fff;z-index:1}.positionTable th{color:#667085;font-weight:700;background:#f8fafc}.positionTable th:first-child{background:#f8fafc}.positionTable strong,.positionTable span{display:block}.positionTable strong{color:#1d1d1f;white-space:nowrap}.positionTable span{margin-top:4px;color:#98a2b3;white-space:nowrap}.positionTable .strategyMetaCell,.positionTable .levelsCell,.positionTable .strategyCell{text-align:left}.positionTable .levelsCell{min-width:210px}.positionTable .strategyCell{min-width:360px;max-width:460px}.positionTable .strategyCell strong,.positionTable .strategyCell span,.positionTable .levelsCell strong,.positionTable .levelsCell span{white-space:normal;line-height:1.45}.positionTable .strategyMetaCell strong{color:#111827}.positionTable .strategyMetaCell span{color:#667085}.positionTable .systemBadge,.systemInline{display:inline-flex;align-items:center;width:fit-content;max-width:100%;white-space:normal;line-height:1.35;border-radius:999px;padding:3px 8px;background:#eef2ff;color:#3730a3;font-size:12px;font-weight:650}.systemInline{margin-top:6px;border-radius:8px;background:#f1f5f9;color:#334155;font-weight:600}.positionTable .up strong,.positionTable .up span{color:#c2410c}.positionTable .down strong,.positionTable .down span{color:#059669}.candidateTable{min-width:920px}.candidateTable .leftCell{max-width:460px;text-align:left}.candidateTable .leftCell span{white-space:normal;line-height:1.5;color:#424245}.positionCardList,.candidateCardList{display:grid;gap:12px;margin-top:12px}.holdingCard,.candidateCard{background:#fbfbfd}.holdingHead strong,.candidateHead strong{color:#1d1d1f;font-size:16px}.holdingPnl,.candidateStatus{text-align:right}.holdingPnl b{font-size:18px}.holdingMetrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.candidateFactsGrid,.candidatePlanGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.holdingMetrics span{display:grid;gap:3px;min-height:52px;padding:8px 10px;border:1px solid #edf1f5;border-radius:10px;background:#fff;color:#667085;font-size:12px}.candidateFactsGrid span,.candidatePlanGrid span{display:grid;gap:4px;min-height:58px;padding:10px 12px;border:1px solid #edf1f5;border-radius:10px;background:#fff;color:#667085;font-size:12px;line-height:1.45}.holdingMetrics b{color:#1d1d1f;font-size:13px}.candidateFactsGrid b,.candidatePlanGrid b{color:#1d1d1f;font-size:13px;font-weight:600}.holdingBody{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.holdingPending{grid-column:1 / -1;display:grid;gap:5px;padding:10px 12px;border:1px dashed #d2d2d7;border-radius:10px;background:#fff}.holdingPending strong{color:#1d1d1f}.holdingPending p{margin:0;color:#667085;font-size:13px;line-height:1.5}.candidateCard.highlightCandidate{border-color:#c2410c52;background:#fff7ed}.alertCardButton{width:100%;color:inherit;text-align:left;cursor:pointer}.alertCardButton:hover{border-color:#0071e347;background:#f8fafc}.summaryGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0 6px}.summaryTile{display:grid;gap:5px;min-height:86px;padding:12px;border:1px solid #e8e8ed;border-radius:12px;background:#fbfbfd}.summaryTile.compact{min-height:76px}.summaryTile span,.summaryTile small{color:#667085;font-size:12px}.summaryTile strong{color:#1d1d1f;font-size:20px;line-height:1.15}.marketDailyPanel{display:grid;gap:14px}.marketConclusion{display:grid;gap:5px;padding:14px;border:1px solid #e8e8ed;border-radius:12px;background:#fbfbfd}.marketConclusion.negative{border-color:#be123c2e;background:#fff1f2}.marketConclusion.positive{border-color:#0596692e;background:#ecfdf3}.marketConclusion strong,.marketBriefHead strong,.focusBlock h3{color:#1d1d1f}.marketConclusion p,.marketConclusion span{margin:0;color:#424245;line-height:1.55}.marketConclusion span{color:#667085;font-size:12px}.marketBriefGrid,.focusGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.focusGrid{grid-template-columns:1.4fr 1fr}.marketBriefCard,.focusBlock,.holdingCard,.candidateCard,.alertCardButton{display:grid;gap:12px;padding:14px;border:1px solid #e8e8ed;border-radius:12px;background:#fff}.marketBriefCard.negative{border-color:#be123c2e;background:#fff8f9}.marketBriefCard.positive{border-color:#0596692e;background:#f6fef9}.marketBriefHead,.holdingHead,.candidateHead{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.marketBriefHead div,.holdingHead div,.candidateHead div{display:grid;gap:4px}.marketBriefHead span,.holdingHead span,.candidateHead span{color:#667085;font-size:12px}.marketBriefHead b{min-width:42px;color:#1d1d1f;font-size:28px;line-height:1;text-align:right}.keyPointGroup{display:grid;gap:6px}.keyPointGroup strong{color:#1d1d1f;font-size:13px}.keyPointGroup ul{display:grid;gap:5px;margin:0;padding-left:18px}.keyPointGroup li,.keyPointGroup p,.focusBlock p,.impactRow p{margin:0;color:#667085;font-size:13px;line-height:1.5}.industryColumns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.impactRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;padding-top:8px;border-top:1px solid #edf1f5}.impactRow:first-of-type{border-top:0}.impactRow strong{color:#1d1d1f}.impactRow strong span{color:#667085;font-weight:500}.impactRow em,.holdingPnl b,.candidateStatus b,.holdingMetrics b{font-style:normal}.positive{color:#c2410c!important}.negative{color:#059669!important}.dailySummaryGrid{margin-top:4px}.analysisGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.analysisBlock{display:grid;gap:10px;min-height:180px;padding:14px;border:1px solid #e8e8ed;border-radius:12px;background:#fbfbfd}.analysisBlockHead{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.analysisBlockHead h3{margin:0;color:#1d1d1f;font-size:15px}.analysisScoreRow{display:flex;align-items:baseline;gap:10px}.analysisScoreRow strong{color:#1d1d1f;font-size:28px;line-height:1}.analysisScoreRow span,.analysisBlock p,.eventMiniItem span{color:#667085;font-size:13px;line-height:1.55}.analysisBlock p{margin:0}.statusPill{display:inline-flex;align-items:center;min-height:26px;padding:4px 9px;border:1px solid #e8e8ed;border-radius:999px;background:#fff;color:#667085;font-size:12px;font-weight:650;white-space:nowrap}.statusPill.ok{border-color:#0596693d;background:#ecfdf3;color:#067647}.statusPill.warn{border-color:#c2410c38;background:#fff7ed;color:#9a3412}.chipRow{display:flex;flex-wrap:wrap;gap:7px}.chipRow span{display:inline-flex;align-items:center;min-height:28px;padding:5px 9px;border-radius:999px;background:#eef2ff;color:#3730a3;font-size:12px;font-weight:600}.chipRow.weak span{background:#fff7ed;color:#9a3412}.eventList{display:grid;gap:8px}.eventMiniItem{display:grid;gap:4px;padding-top:8px;border-top:1px solid #edf1f5}.eventMiniItem:first-child{padding-top:0;border-top:0}.eventMiniItem strong{color:#1d1d1f;font-size:13px}.dataStatusStrip{margin:2px 0 0}.upText{color:#c2410c!important}.downText{color:#059669!important}.tradeForm{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.candidateForm{display:grid;grid-template-columns:120px minmax(120px,1fr) minmax(120px,1fr) 96px;gap:10px}.candidateForm textarea{grid-column:span 3;min-height:42px}.candidateForm button{align-self:stretch}.tradeForm textarea{grid-column:span 3;min-height:42px}.tradeForm button{align-self:stretch}.tradeList{display:grid;gap:8px}.tradeItem{display:grid;grid-template-columns:minmax(130px,1.2fr) repeat(3,minmax(100px,1fr));gap:10px;padding:10px 0;border-top:1px solid #edf1f5;font-size:13px}.tradeItem div{display:grid;gap:4px;align-content:start}.tradeItem strong{color:#1d1d1f}.tradeItem span{color:#667085}.statusStrip{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.statusStrip span,.statusStrip button{min-height:30px;padding:6px 10px;border:1px solid #e8e8ed;border-radius:999px;background:#fbfbfd;color:#667085;font-size:13px}.statusStrip button{cursor:pointer}.statusStrip button:hover{border-color:#2354ff47;color:#2354ff}.statusStrip .statusOk{border-color:#0596693d;background:#ecfdf3;color:#067647}.statusStrip .statusWarn{border-color:#c2410c38;background:#fff7ed;color:#9a3412}.settingsForm{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.settingsForm label{display:grid;gap:6px;color:#424245;font-size:13px}.settingsForm .wideField,.settingsActions{grid-column:1 / -1}.modelSwitch{grid-column:1 / -1;display:flex!important}.runList{display:grid;gap:8px;margin-top:14px}.runItem{display:grid;gap:4px;padding:10px 0;border-top:1px solid #edf1f5;font-size:13px}.alertButton{width:100%;text-align:left;border-right:0;border-bottom:0;border-left:0;border-radius:0;background:transparent;color:inherit;cursor:pointer}.alertButton:hover{background:#f8fafc}.runItem strong{color:#1d1d1f}.runItem span{color:#667085}.alertItem p,.alertItem .alertBody{margin:4px 0 0;max-height:160px;overflow:auto;white-space:pre-wrap;color:#424245;line-height:1.55}.candidateTable tr.highlightCandidate td{background:#fff7ed}.statementDraftBox{display:grid;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid #edf1f5}.statementDraftBox h3{margin:0;color:#1d1d1f;font-size:15px}@media(max-width:620px){.queryRow,.mainTabs,.summaryGrid,.analysisGrid,.marketBriefGrid,.focusGrid,.industryColumns,.holdingMetrics,.candidateFactsGrid,.candidatePlanGrid,.holdingBody,.settingsForm,.tradeForm,.candidateForm,.tradeItem{grid-template-columns:1fr}.marketBriefHead,.holdingHead,.candidateHead{align-items:stretch}.holdingPnl,.candidateStatus{text-align:left}.tradeForm textarea,.candidateForm textarea{grid-column:auto}.panel,.loginCard{padding:14px}}
