*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;background:#f5f7fa;font-family:HarmonyOS Sans SC,HarmonyOS Sans,PingFang SC,Microsoft YaHei,sans-serif}.boot{min-height:100vh;display:grid;place-items:center}.boot-dot{position:relative;display:inline-block;font-size:32px;width:1em;height:1em;color:#1677ff}.boot-dot i{position:absolute;display:block;width:12px;height:12px;background:currentColor;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:boot-move 1s linear infinite alternate}.boot-dot i:nth-child(1){top:0;left:0}.boot-dot i:nth-child(2){top:0;right:0;animation-delay:.4s}.boot-dot i:nth-child(3){right:0;bottom:0;animation-delay:.8s}.boot-dot i:nth-child(4){bottom:0;left:0;animation-delay:1.2s}.boot-dot-spin{transform:rotate(45deg);animation:boot-rotate 1.2s linear infinite}@keyframes boot-move{to{opacity:1}}@keyframes boot-rotate{to{transform:rotate(405deg)}}.page{--page-pad-x: clamp(16px, 1.5vw, 32px);width:100%;max-width:none;margin:0;padding:20px var(--page-pad-x) 40px;color:#1f2329}.page-wide{max-width:none;overflow-x:hidden}.pos-table-wrap .ant-table-content{overflow-x:auto}.pos-table-wrap table{width:max-content;min-width:100%}.pos-table-wrap .ant-table-thead>tr>th,.pos-table-wrap .ant-table-tbody>tr>td{padding:8px 10px;white-space:nowrap}.pos-cards{display:none;max-width:100%;min-width:0;padding:8px 12px 12px}.pos-card{width:100%;max-width:100%;min-width:0;margin-bottom:8px;padding:12px;border:1px solid #eef0f4;border-radius:10px;background:#fff;text-align:left;cursor:pointer}.pos-card.is-selected{border-color:#1677ff;background:#e6f4ff}.pos-card.is-runner-floor{border-color:#f3d19c;background:#fffaf3}.pos-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;margin-bottom:8px}.pos-card-title{display:flex;align-items:center;gap:8px;min-width:0;font-weight:650}.pos-card-pnl{font-size:18px;font-weight:700}.pos-card-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin-top:10px}.manage-chips{display:inline-flex;align-items:center;gap:8px}.cancel-chip.ant-btn{display:inline-flex;align-items:center;height:22px;padding:0 9px;border:1px solid #fecdd3;border-radius:999px;background:#fff1f2;color:#e11d48;font-size:12px;font-weight:600;box-shadow:none}.cancel-chip.ant-btn .anticon{font-size:11px}.cancel-chip.ant-btn:hover,.cancel-chip.ant-btn:focus{border-color:#fda4af!important;background:#ffe4e6!important;color:#be123c!important}.cancel-chip.ant-btn:active{background:#fecdd3!important}.lock-chip.ant-btn{display:inline-flex;align-items:center;height:22px;padding:0 9px;border:1px solid #fde68a;border-radius:999px;background:#fffbeb;color:#b45309;font-size:12px;font-weight:600;box-shadow:none}.lock-chip.ant-btn:hover,.lock-chip.ant-btn:focus{border-color:#fcd34d!important;background:#fef3c7!important;color:#92400e!important}.lock-chip.ant-btn:active{background:#fde68a!important}.pos-card-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px 12px;min-width:0}.pos-card-field{display:flex;justify-content:space-between;gap:8px;min-width:0;font-size:12px}.pos-card-field span{flex:0 1 auto;color:#8c8c8c}.pos-card-field strong{min-width:0;overflow-wrap:anywhere;text-align:right}.risk-dist{display:flex;flex-direction:column;gap:2px;min-width:0;font-weight:650;white-space:normal}.risk-dist-row{display:flex;justify-content:space-between;gap:12px}.risk-dist-sl{color:#c2783b}.risk-dist-tp{color:#16a34a}.pos-empty{padding:16px;color:#8c8c8c}.msg-photos{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.msg-photo-btn{padding:0;border:0;background:none;line-height:0;cursor:zoom-in}.msg-photo{max-width:min(520px,100%);max-height:360px;object-fit:contain;border-radius:10px;border:1px solid #eef0f4;background:#fafafa;cursor:zoom-in}.msg-photo-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#000000eb}.msg-photo-close{position:absolute;top:20px;right:30px;z-index:2;padding:0;border:0;background:none;color:#fff;font-size:40px;line-height:1;opacity:.7;cursor:pointer}.msg-photo-full{max-width:94vw;max-height:94vh;object-fit:contain;cursor:grab;transform-origin:center center;-webkit-user-select:none;user-select:none}.msg-thread{display:flex;flex-direction:column;gap:6px;padding:4px 0 8px}.msg-expand{padding:4px 0 8px}.msg-thread-item{display:grid;grid-template-columns:170px 160px minmax(0,1fr);gap:12px;width:100%;padding:8px 10px;border:1px solid #eef0f4;border-radius:8px;background:#fafbfc;color:#1f2329;text-align:left;cursor:pointer}.msg-thread-item.is-selected{border-color:#1677ff;background:#e6f4ff}.msg-thread-item .sub{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-stack{padding-bottom:8px}.detail-block{padding:12px 16px;border-top:1px solid #f0f0f0}.detail-block>.ant-alert{margin-top:8px}.chart-order-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0;color:#000000bf}.chart-order-row .ant-input-number{width:180px}.chart-order-slider{margin:2px 0 8px}.position-chart{--chart-h: 620px}.pos-table-wrap .ant-table-tbody>tr.ant-table-expanded-row>td{padding:0!important;border-bottom:0;background:#fff}.pos-table-wrap .ant-table-expanded-row .ant-table-expanded-row-fixed{margin:0!important;padding:0!important}.pos-table-wrap .ant-table-expanded-row .ant-table-expanded-row-fixed:after{display:none}.pos-table-wrap .ant-table-tbody>tr.ant-table-expanded-row:hover>td{background:#fff}.position-chart-frame{display:flex;align-items:flex-start;justify-content:center;height:0;opacity:0;overflow:hidden;border-bottom:1px solid #f0f0f0;background:#fff;will-change:height;transition:height .4s cubic-bezier(.33,1,.68,1),opacity .26s ease-out}.position-chart-frame.is-open{height:var(--chart-h);opacity:1}.position-chart-frame.is-closing{transition:height .34s cubic-bezier(.32,0,.67,0),opacity .3s ease-in}.position-chart-frame iframe{flex:none;width:100%;height:var(--chart-h);border:0}.position-chart-frame .ant-spin{align-self:center}.pos-cards>.position-chart{margin:-4px 0 12px;border-radius:8px;overflow:hidden}@media (max-width: 720px){.position-chart{--chart-h: 460px}}@media (prefers-reduced-motion: reduce){.position-chart-frame,.position-chart-frame.is-closing{transition:none}}.detail-note{margin-top:8px;color:#1f2329;font-size:13px;white-space:pre-wrap;word-break:break-word}.detail-note.is-zh{padding-top:8px;border-top:1px dashed #eef0f4}.detail-translate-row{margin-top:8px}.detail-translate-btn{height:28px;padding:0 10px;border:1px solid #e5e6eb;border-radius:8px;background:#fff;color:#1f2329;font-size:12px;font-weight:600;cursor:pointer}.detail-translate-btn:hover:not(:disabled){background:#f5f7fa}.detail-translate-btn:disabled{opacity:.55;cursor:default}.detail-translate-error{margin-top:6px;color:#ef4444;font-size:12px}.detail-table-wrap{overflow-x:auto;margin-top:8px}.detail-table{width:max-content;min-width:100%;border-collapse:collapse;font-size:12px}.detail-table th,.detail-table td{padding:6px 10px;text-align:left;white-space:nowrap;border-bottom:1px solid #f0f0f0}.app-shell-nav{position:relative;z-index:30;overflow:visible;margin:-20px calc(-1 * var(--page-pad-x, 28px)) 16px;background:#fff;border-bottom:1px solid #eef0f4;box-shadow:0 1px #0f172a05}.app-shell-header{position:relative;display:flex;align-items:center;justify-content:flex-end;padding:0 20px;min-height:56px;background:#fff;overflow:visible}.app-primary-nav{position:absolute;left:50%;top:0;bottom:0;display:flex;align-items:stretch;justify-content:center;gap:4px;transform:translate(-50%)}.app-primary-nav>a,.app-nav-trigger{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:10px;color:#646a73;text-decoration:none;font-size:13px;font-weight:600;white-space:nowrap}.app-primary-nav>a:hover,.app-primary-nav>a.is-on,.app-nav-item:hover .app-nav-trigger,.app-nav-item:focus-within .app-nav-trigger,.app-nav-item.is-on .app-nav-trigger{color:#1677ff;background:#e6f4ff}.app-nav-item{position:relative;display:flex;align-items:stretch;align-self:stretch}.app-nav-trigger{height:100%}.app-nav-dropdown{position:absolute;top:calc(100% + 4px);left:50%;z-index:40;display:none;min-width:148px;padding:6px;border:1px solid #eef0f4;border-radius:12px;background:#fff;box-shadow:0 10px 28px #0f172a1f;transform:translate(-50%)}.app-nav-dropdown:before{content:"";position:absolute;left:0;right:0;top:-16px;height:16px}.app-nav-item:hover .app-nav-dropdown,.app-nav-item:focus-within .app-nav-dropdown{display:flex;flex-direction:column;gap:2px}.app-nav-dropdown a{display:block;padding:8px 12px;border-radius:8px;color:#646a73;text-decoration:none;font-size:13px;font-weight:600;white-space:nowrap}.app-nav-dropdown a:hover,.app-nav-dropdown a.is-on{color:#1677ff;background:#e6f4ff}.app-nav-icon{font-size:15px}.app-shell-right{display:flex;align-items:center;gap:16px;color:#8c8c8c;font-size:12px;line-height:22px;flex:0 0 auto;position:relative;z-index:1}.app-shell-right .ant-btn{height:22px;padding:0;margin:0;font-size:12px;line-height:22px}.app-user,.app-meta{color:#1f2329;font-weight:600;white-space:nowrap}.app-meta{color:#8c8c8c;font-weight:400}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:14px}.title{margin:0;font-size:22px;font-weight:650;letter-spacing:.2px}.page-subnav{display:flex;flex-wrap:wrap;gap:8px}.page-subnav a{padding:4px 12px;border-radius:999px;border:1px solid #eef0f4;background:#fff;color:#646a73;text-decoration:none;font-size:12px;font-weight:600}.page-subnav a.is-on{color:#1677ff;border-color:#91caff;background:#e6f4ff}.header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.header-meta{display:flex;align-items:center;gap:12px;color:#8c8c8c;font-size:12px}.page-nav{display:flex;flex-wrap:wrap;gap:16px;margin-top:10px;font-size:13px}.page-nav a{color:#8c8c8c;text-decoration:none}.page-nav a.is-on{color:#1677ff;font-weight:650}@media (max-width: 960px){.app-shell-header{flex-wrap:wrap;padding-top:10px;padding-bottom:10px}.app-primary-nav{position:static;transform:none;order:3;width:100%;justify-content:flex-start}}.kpi-grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}.kpi-grid-6{grid-template-columns:repeat(6,minmax(0,1fr))}.live{display:inline-flex;align-items:center;gap:6px;color:#16a34a;font-weight:600}.live-tap{cursor:default;-webkit-user-select:none;user-select:none}.live-dot{width:8px;height:8px;border-radius:50%;background:#16a34a;box-shadow:0 0 #16a34a73;animation:pulse 1.6s ease infinite}@keyframes pulse{70%{box-shadow:0 0 0 6px #16a34a00}}.section{max-width:100%;min-width:0;overflow-x:hidden;background:#fff;border:1px solid #eef0f4;border-radius:10px;margin-bottom:12px}.section-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #f0f0f0}.section-head-actions{display:flex;align-items:center;gap:12px}.section-head h2,.panel h2{margin:0;font-size:14px;font-weight:650}.market-risk-preview{overflow:hidden;border-color:#ffccc7;background:snow}.market-risk-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border-bottom:1px solid #ffe1de}.market-risk-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:4px}.market-risk-heading{display:flex;align-items:center;gap:12px;min-width:0}.market-risk-icon{display:grid;width:32px;height:32px;place-items:center;border-radius:50%;background:#fff1f0;color:#cf1322}.market-risk-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.market-risk-title-row h2{margin:0;font-size:16px;font-weight:650}.market-risk-title-row .ant-tag{margin-inline-end:0}.market-risk-score{color:#cf1322;font-size:17px}.market-risk-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-bottom:1px solid #f0f0f0}.market-risk-metric{display:flex;flex-direction:column;gap:5px;min-width:0;padding:12px 16px;border-right:1px solid #f0f0f0}.market-risk-metric:last-child{border-right:0}.market-risk-metric span{color:#8c8c8c;font-size:12px}.market-risk-metric strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px}.market-risk-metric .anticon{font-size:11px}.market-risk-warning{color:#d46b08}.market-risk-body{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:16px;padding:14px 16px 16px}.market-risk-subtitle{margin-bottom:9px;color:#595959;font-size:13px;font-weight:650}.market-risk-factor-list{display:grid;grid-template-columns:1fr 1fr;gap:8px}.market-risk-factor{display:flex;gap:8px;min-width:0;padding:9px 10px;border:1px solid #f0f0f0;border-radius:7px;background:#fff}.market-risk-factor-index{display:grid;flex:0 0 20px;width:20px;height:20px;place-items:center;border-radius:50%;background:#fff1f0;color:#cf1322;font-size:11px;font-weight:650}.market-risk-factor>div{min-width:0}.market-risk-factor>div>strong,.market-risk-factor>div>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.market-risk-factor>div>strong{color:#262626;font-size:12px}.market-risk-factor>div>span{margin-top:2px;color:#8c8c8c;font-size:11px}.market-risk-trend{min-width:0;padding:10px 12px 8px;border:1px solid #f0f0f0;border-radius:7px;background:#fff}.market-risk-trend-head,.market-risk-trend-axis{display:flex;align-items:center;justify-content:space-between;gap:8px}.market-risk-trend-head{color:#595959;font-size:12px}.market-risk-trend-head strong{font-size:11px}.market-risk-trend svg{display:block;width:100%;height:104px;margin-top:7px}.market-risk-trend svg line{stroke:#f0f0f0;stroke-width:1}.market-risk-trend-area{fill:#ff4d4f1a}.market-risk-trend-line{fill:none;stroke:#ff4d4f;stroke-width:2.5}.market-risk-trend circle{fill:#ff4d4f;stroke:#fff;stroke-width:2}.market-risk-trend-axis{color:#bfbfbf;font-size:10px}.market-risk-details{padding:14px 16px 16px;border-top:1px solid #ffe1de;background:#fff}.market-risk-analysis{margin-bottom:16px;padding:14px;border:1px solid #f0f0f0;border-radius:8px;background:#fffdfb}.market-risk-analysis-head,.market-risk-analysis-meta{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.market-risk-analysis-head strong{display:block;color:#262626;font-size:15px}.market-risk-analysis-head span{display:block;margin-top:3px;color:#8c8c8c;font-size:11px}.market-risk-analysis-head .ant-tag{margin-inline-end:0}.market-risk-analysis-summary{margin:12px 0;color:#434343;font-size:13px;line-height:1.75}.market-risk-analysis-reasons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.market-risk-analysis-reason{display:flex;gap:9px;min-width:0;padding:10px;border:1px solid #f0f0f0;border-radius:7px;background:#fff}.market-risk-analysis-reason>span{display:grid;flex:0 0 20px;width:20px;height:20px;place-items:center;border-radius:50%;background:#fff1f0;color:#cf1322;font-size:11px;font-weight:650}.market-risk-analysis-reason strong{display:block;color:#262626;font-size:12px}.market-risk-analysis-reason p{margin:3px 0;color:#595959;font-size:12px;line-height:1.55}.market-risk-analysis-reason em{color:#8c8c8c;font-size:11px;font-style:normal}.market-risk-analysis-conclusion{display:grid;grid-template-columns:68px minmax(0,1fr);gap:10px;margin-top:10px;padding:10px;border-left:3px solid #fa8c16;background:#fff7e6;color:#595959;font-size:12px;line-height:1.6}.market-risk-analysis-conclusion strong{color:#ad4e00}.market-risk-analysis-meta{flex-wrap:wrap;margin-top:12px;padding-top:10px;border-top:1px solid #f0f0f0;color:#8c8c8c;font-size:11px}.market-risk-sources{padding:12px 16px 14px;border-top:1px solid #ffe1de;background:#fffdf8}.market-risk-sources-head{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#262626;font-size:13px}.market-risk-sources-head span{color:#8c8c8c;font-size:11px}.market-risk-source-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}.market-risk-source{display:flex;flex-direction:column;gap:4px;min-width:0;padding:9px 10px;border:1px solid #f0f0f0;border-radius:7px;background:#fff}.market-risk-source strong{color:#262626;font-size:12px}.market-risk-source code{display:block;overflow:hidden;color:#1677ff;font-family:Consolas,Courier New,monospace;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.market-risk-source span{min-height:32px;color:#8c8c8c;font-size:11px}.market-risk-source em{color:#389e0d;font-size:11px;font-style:normal}.market-risk-source-note{margin-top:10px;color:#8c8c8c;font-size:11px;line-height:1.5}.market-risk-details-head,.market-risk-detail-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.market-risk-details-head{color:#262626;font-size:13px}.market-risk-details-head span,.market-risk-detail-footer{color:#8c8c8c;font-size:11px}.market-risk-score-grid{display:grid;gap:10px;margin-top:12px}.market-risk-score-row{display:grid;grid-template-columns:132px minmax(80px,1fr) 48px;align-items:center;gap:10px;color:#595959;font-size:12px}.market-risk-score-row strong{color:#cf1322;text-align:right}.market-risk-progress{height:7px;overflow:hidden;border-radius:999px;background:#f0f0f0}.market-risk-progress i{display:block;height:100%;border-radius:inherit;background:#ff4d4f}.market-risk-preview[data-level]{border-color:var(--mr-border);background:var(--mr-bg)}.market-risk-preview[data-level] .market-risk-head{border-bottom-color:var(--mr-border)}.market-risk-preview[data-level] .market-risk-factor-index,.market-risk-preview[data-level] .market-risk-icon{background:var(--mr-soft);color:var(--mr-accent)}.market-risk-preview[data-level] .market-risk-score,.market-risk-preview[data-level] .market-risk-score-row strong{color:var(--mr-accent)}.market-risk-preview[data-level] .market-risk-progress i,.market-risk-preview[data-level] .market-risk-trend circle{background:var(--mr-line);fill:var(--mr-line)}.market-risk-preview[data-level] .market-risk-trend-line{stroke:var(--mr-line)}.market-risk-preview[data-level] .market-risk-trend-area{fill:var(--mr-line);fill-opacity:.1}.market-risk-preview[data-level=low]{--mr-accent: #389e0d;--mr-soft: #f6ffed;--mr-border: #b7eb8f;--mr-bg: #fcfffa;--mr-line: #52c41a}.market-risk-preview[data-level=watch]{--mr-accent: #ad8b00;--mr-soft: #feffe6;--mr-border: #fffb8f;--mr-bg: #fffff7;--mr-line: #d4b106}.market-risk-preview[data-level=medium]{--mr-accent: #d46b08;--mr-soft: #fff7e6;--mr-border: #ffd591;--mr-bg: #fffcf7;--mr-line: #fa8c16}.market-risk-preview[data-level=high]{--mr-accent: #cf1322;--mr-soft: #fff1f0;--mr-border: #ffccc7;--mr-bg: #fffafa;--mr-line: #ff4d4f}.market-risk-preview[data-level=extreme]{--mr-accent: #820014;--mr-soft: #fff1f0;--mr-border: #ff7875;--mr-bg: #fff5f5;--mr-line: #a8071a}.market-risk-preview[data-level=unavailable]{--mr-accent: #8c8c8c;--mr-soft: #fafafa;--mr-border: #d9d9d9;--mr-bg: #fcfcfc;--mr-line: #bfbfbf}.market-risk-score-factors{display:flex;flex-wrap:wrap;gap:4px 14px;margin:4px 0 2px 142px;color:#8c8c8c;font-size:11px}.market-risk-score-factors .is-hit{color:var(--mr-accent, #cf1322)}.market-risk-score-factors .is-off{color:#bfbfbf}@media (max-width: 900px){.market-risk-score-factors{margin-left:0}}.market-risk-tech{margin-top:16px}.market-risk-tech-gauges{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:8px}.market-risk-tech-gauge{text-align:center}.market-risk-tech-arc{width:140px;height:86px}.market-risk-tech-caption,.market-risk-tech-counts{color:#8c8c8c;font-size:12px}.market-risk-tech-counts{display:flex;justify-content:center;gap:12px;margin-top:2px}.market-risk-tech-act.is-buy,.market-risk-tech-act.is-strong_buy,.market-risk-tech-counts .is-buy{color:#1677ff}.market-risk-tech-act.is-sell,.market-risk-tech-act.is-strong_sell,.market-risk-tech-counts .is-sell{color:#cf1322}.market-risk-tech-act.is-strong_buy,.market-risk-tech-act.is-strong_sell{font-weight:600}.market-risk-tech-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:8px}.market-risk-tech table{width:100%;border-collapse:collapse;margin-top:6px;font-size:12px}.market-risk-tech th{color:#8c8c8c;font-weight:500;text-align:left}.market-risk-tech td,.market-risk-tech th{padding:4px 6px 4px 0;border-bottom:1px solid #f0f0f0}.market-risk-tech td:last-child,.market-risk-tech th:last-child{text-align:right}.market-risk-tech-pivots{margin-top:14px}@media (max-width: 900px){.market-risk-tech-gauges,.market-risk-tech-cols{grid-template-columns:1fr}}.market-risk-collapse{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .32s cubic-bezier(.4,0,.2,1),opacity .24s ease}.market-risk-collapse.is-open{grid-template-rows:1fr;opacity:1}.market-risk-collapse-inner{min-height:0;overflow:hidden}.market-risk-collapse-inner>*{transform:translateY(-6px);transition:transform .32s cubic-bezier(.4,0,.2,1)}.market-risk-collapse.is-open .market-risk-collapse-inner>*{transform:none}@media (prefers-reduced-motion: reduce){.market-risk-collapse,.market-risk-collapse-inner>*{transition:none}}.market-risk-macro{margin-top:16px}.market-risk-macro-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-top:10px}.market-risk-macro-grid>div{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border:1px solid #f0f0f0;border-radius:8px;background:#fff}.market-risk-macro-grid span,.market-risk-macro-grid em,.market-risk-news em{color:#8c8c8c;font-size:11px;font-style:normal}.market-risk-macro-grid strong{font-size:15px}.market-risk-macro-grid .market-risk-event{font-size:12px;font-weight:500}.market-risk-event-window{margin-top:10px;padding:8px 12px;border-radius:8px;background:#fff7e6;color:#d46b08;font-size:12px}.market-risk-news-list{display:grid;gap:8px;margin-top:12px}.market-risk-news{display:grid;gap:4px;padding:8px 12px;border:1px solid #f0f0f0;border-radius:8px;background:#fff}.market-risk-news-tags{display:flex;align-items:center;gap:4px;color:#8c8c8c;font-size:11px}.market-risk-news a{color:#262626;font-size:13px}@media (max-width: 900px){.market-risk-macro-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.market-risk-source em.is-error,.market-risk-source em.is-stale{color:#cf1322}.market-risk-source em.is-pending{color:#8c8c8c}.market-risk-detail-footer{flex-wrap:wrap;margin-top:14px;padding-top:10px;border-top:1px solid #f0f0f0}.kpi-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:12px;margin-bottom:12px}.kpi{background:#fff;border:1px solid #eef0f4;border-radius:10px;padding:14px 16px}.kpi-top{display:flex;align-items:center;justify-content:space-between;color:#8c8c8c;font-size:12px}.kpi-value{margin:8px 0 4px;font-size:24px;font-weight:700;letter-spacing:-.3px}.kpi-note{color:#8c8c8c;font-size:12px}.pos{color:#16a34a}.neg{color:#ef4444}.chart-grid{display:grid;grid-template-columns:1.7fr 1fr;gap:12px;margin-bottom:12px}.panel{background:#fff;border:1px solid #eef0f4;border-radius:10px;padding:16px}.pnl-cal{--pnl-gap: clamp(2px, .28vw, 4px);width:100%;min-width:0;background:#fff;border:1px solid #eef0f4;border-radius:10px;padding:16px;margin-bottom:12px}.pnl-cal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}.pnl-cal-head h2{margin:0;font-size:14px;font-weight:650}.pnl-cal-note{margin-top:4px;color:#8c8c8c;font-size:12px;line-height:1.5}.pnl-cal-error{margin-top:8px;color:#ef4444;font-size:12px}.pnl-cal-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}.pnl-cal-kpis .kpi{background:#f7f8fa;border:0}.pnl-cal-bestworst{font-size:20px}.pnl-cal-slash{color:#8c8c8c;font-weight:500}.pnl-cal-heat{display:flex;align-items:stretch;gap:8px;width:100%;min-width:0}.pnl-cal-weekdays{display:grid;grid-template-rows:18px repeat(7,minmax(0,1fr));gap:var(--pnl-gap);color:#8c8c8c;font-size:11px;flex:0 0 auto}.pnl-cal-weekdays span{display:flex;align-items:center;line-height:1}.pnl-cal-month-spacer{height:18px}.pnl-cal-scroll{flex:1 1 auto;min-width:0;width:100%;overflow-x:auto;overflow-y:hidden;padding-bottom:0;display:flex;flex-direction:column;gap:var(--pnl-gap)}.pnl-cal-months,.pnl-cal-weeks{display:grid;grid-template-columns:repeat(var(--pnl-weeks, 53),minmax(0,1fr));gap:var(--pnl-gap);width:100%}.pnl-cal-months span{min-width:0;color:#8c8c8c;font-size:11px;line-height:18px;white-space:nowrap;overflow:visible}.pnl-cal-week{display:grid;grid-template-rows:repeat(7,auto);gap:var(--pnl-gap);min-width:0;width:100%}.pnl-cal-week>*{display:block;min-width:0;width:100%}.pnl-cal-cell{display:block;width:100%;aspect-ratio:1 / 1;height:auto;min-width:0;border-radius:2px;background:#eef0f4}.pnl-cal-legend .pnl-cal-cell{width:12px;height:12px;flex:0 0 12px;aspect-ratio:auto}.pnl-cal-cell.is-out{background:transparent}.pnl-cal-cell.is-none{background:#eef0f4}.pnl-cal-cell.is-flat{background:#d9dde3}.pnl-cal-cell.is-loss1{background:#fca5a5}.pnl-cal-cell.is-loss2{background:#ef4444}.pnl-cal-cell.is-profit1{background:#86efac}.pnl-cal-cell.is-profit2{background:#16a34a}.pnl-cal-cell:hover{outline:1px solid #1f2329}.pnl-cal-cell.is-clickable{cursor:pointer}.pnl-cal-legend{display:flex;align-items:center;gap:6px;margin-top:12px;color:#8c8c8c;font-size:12px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 20px;margin-top:12px}.stat-label{color:#8c8c8c;font-size:12px}.stat-value{margin-top:4px;font-size:14px;font-weight:650}.session-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;padding:16px}.session-meta{display:flex;justify-content:space-between;margin-top:8px;color:#8c8c8c;font-size:12px}.conclusion-block{margin-top:10px}.conclusion-label{color:#8c8c8c;font-size:12px}.conclusion-text{margin-top:6px;color:#1f2329;font-size:13px;line-height:1.65;white-space:pre-wrap;word-break:break-word}.sub{display:block;color:#8c8c8c;font-size:11px;line-height:1.4}.filter-row{display:flex;flex-wrap:wrap;align-items:end;gap:12px;padding:14px 16px}.filter-item{display:flex;flex-direction:column;gap:6px;color:#8c8c8c;font-size:12px}.trader-cell{display:flex;flex-direction:column;gap:4px}.ant-table-wrapper .ant-table-tbody>tr.ant-table-row.is-selected>td,.ant-table-wrapper .ant-table-tbody>tr.ant-table-row.is-selected:hover>td{background:#e6f4ff!important}.trade-kline{width:100%;height:100%;min-width:0}.trade-kline-empty{color:#8c8c8c;font-size:13px;padding:16px}.trade-kline-host{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.trade-history-table .ant-table-expanded-row>.ant-table-cell{position:relative;height:640px;overflow:hidden;padding:0!important}.trade-kline-frame{display:block;width:100%;height:100%;border:0;background:#fff}@media (max-width: 720px){.trade-history-table .ant-table-expanded-row>.ant-table-cell{height:480px}}.pos-table-wrap .ant-table-cell-fix-right{background:#fff}.pos-table-wrap .ant-table-tbody>tr.ant-table-row:hover>td.ant-table-cell-fix-right{background:var(--ant-table-row-hover-bg, #fafafa)}.pos-table-wrap .ant-table-tbody>tr.ant-table-row.is-selected>td.ant-table-cell-fix-right,.pos-table-wrap .ant-table-tbody>tr.ant-table-row.is-selected:hover>td.ant-table-cell-fix-right{background:#e6f4ff!important}@media (max-width: 1200px){.kpi-grid,.kpi-grid-5,.kpi-grid-6,.chart-grid,.session-grid,.market-risk-metrics,.pnl-cal-kpis{grid-template-columns:1fr 1fr}}@media (max-width: 1080px){.pos-table-wrap{display:none}.pos-cards{display:block}}@media (max-width: 760px){.page,.page-wide{--page-pad-x: 12px;padding:12px var(--page-pad-x) 32px}.header{flex-direction:column;align-items:stretch}.kpi-grid,.kpi-grid-5,.kpi-grid-6,.chart-grid,.session-grid,.pnl-cal-kpis,.market-risk-body,.market-risk-factor-list,.market-risk-metrics{grid-template-columns:1fr}.market-risk-metric{border-right:0;border-bottom:1px solid #f0f0f0}.market-risk-metric:last-child{border-bottom:0}.market-risk-head{align-items:flex-start;flex-direction:column}.market-risk-actions{justify-content:flex-start}.market-risk-score-row{grid-template-columns:1fr 80px 48px}.market-risk-source-list,.market-risk-analysis-reasons,.market-risk-analysis-conclusion,.pos-card-grid{grid-template-columns:1fr}.filter-item{width:100%}.filter-item .ant-select,.filter-item .ant-input-affix-wrapper,.filter-item .ant-input{width:100%!important}}.runner-chip.ant-tag{margin-inline-end:0;cursor:pointer;-webkit-user-select:none;user-select:none}.runner-empty{padding:0;border:0;background:none;color:#98a2b3;cursor:pointer}.runner-r-now{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:12px 0 4px;padding:12px 14px;border-radius:10px;background:#f5f7fa;border:1px solid #eef0f4}.runner-r-now.is-profit{background:#f6ffed;border-color:#b7eb8f}.runner-r-now.is-loss{background:#fff2f0;border-color:#ffccc7}.runner-r-now span{color:#646a73;font-size:13px}.runner-r-now strong{font-size:28px;letter-spacing:-.4px}.runner-plan-meta{margin:8px 0 16px;color:#646a73;font-size:13px}.runner-flow{margin:0;padding:0;list-style:none}.runner-step{display:grid;grid-template-columns:16px 1fr;gap:10px;margin-bottom:10px}.runner-dot{width:10px;height:10px;margin-top:8px;border-radius:50%;background:#d0d3d6}.runner-step.is-done .runner-dot{background:#52c41a}.runner-step.is-now .runner-dot{background:#1677ff}.runner-step.is-halted .runner-dot{background:#fa8c16}.runner-step-body{padding:8px 10px;border:1px solid #eef0f4;border-radius:8px;background:#fff}.runner-step.is-now .runner-step-body{border-color:#91caff;background:#e6f4ff}.runner-step.is-done .runner-step-body{border-color:#b7eb8f}.runner-step-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:4px}.runner-step-line,.runner-trailing{color:#646a73;font-size:12px}.runner-trailing{margin-top:12px}.runner-trailing .is-reached{color:#1677ff}.conn-head{display:flex;align-items:center;gap:8px;margin:4px 0 16px}.conn-head-icon{color:#1677ff;font-size:18px}.conn-head h2{margin:0;font-size:18px;font-weight:650}.conn-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:16px}.ch-panel{overflow:hidden}.ch-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 16px 12px}.ch-head h2{margin:0;font-size:18px;font-weight:650}.ch-tools{display:flex;align-items:center;gap:8px}.ch-search{width:220px}.channel-fetch-tg{height:auto;margin-top:-8px;padding:0}.tg-dialog-row{cursor:pointer}.ch-exch{display:grid;place-items:center;width:22px;height:22px;border-radius:6px}.ch-exch svg{width:14px;height:14px;display:block}.ch-exch.is-binance{background:#181a20;color:#f3ba2f}.ch-exch.is-binance-test{background:#f3ba2f;color:#181a20}.ch-exch.is-bitget{background:#111827;color:#00f0ff}.ch-exch.is-bitget-demo{background:#00f0ff;color:#111827}.ch-panel .ant-table-wrapper{padding:0 8px 8px}.ch-panel .ant-table-thead>tr>th{white-space:nowrap}.ch-panel .ant-table-thead>tr>th.ch-col-exch,.ch-panel .ant-table-tbody>tr>td.ch-col-exch{text-align:center;white-space:nowrap}.ch-panel .ant-table-tbody>tr>td.ch-col-exch .ch-exch{margin:0 auto}.ch-actions{display:flex;gap:8px}.ch-trader{display:flex;flex-direction:column;gap:2px;line-height:1.25}.ch-trader-name{color:#1f1f1f;font-weight:600}.ch-trader-id{color:#8c8c8c;font-size:12px}.ch-source{display:flex;flex-direction:column;gap:2px;line-height:1.25}.ch-source-platform{color:#1f1f1f;font-weight:500}.ch-source-channel{color:#8c8c8c;font-size:12px;font-variant-numeric:tabular-nums}.ch-notify{display:inline-flex;align-items:center;justify-content:center;font-size:16px}.ch-notify.is-on{color:#1677ff}.ch-notify.is-off{color:#bfbfbf}.settings-modal .ant-modal-footer{display:flex;justify-content:flex-end;gap:8px}.parser-settings-modal .ant-modal-body{max-height:min(78vh,860px);overflow:auto}.parser-route-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.parser-route-card{min-width:0;border:1px solid #d6e4ff;border-radius:12px;padding:12px 14px 2px;background:#f7faff}.parser-route-card.is-backup{border-color:#f3e0b5;background:#fffaf0}.parser-route-title{margin:0 0 8px;font-size:15px;font-weight:650;color:#1d39c4}.parser-route-card.is-backup .parser-route-title{color:#ad6800}.parser-route-hint{margin:0 0 10px;color:#8c8c8c;font-size:12px;line-height:1.45}.parser-route-models{display:flex;flex-wrap:wrap;gap:12px}.parser-route-models>.ant-form-item{flex:1 1 160px;min-width:0}.parser-route-card .ant-select,.parser-route-card .ant-input-number{width:100%}.parser-route-card .ant-form-item{margin-bottom:12px}.parser-route-test{display:flex;align-items:flex-start;gap:8px;margin:0 0 12px}.parser-route-test-result{min-width:0;font-size:12px;line-height:1.45;word-break:break-word}.parser-route-test-result.is-ok{color:#389e0d}.parser-route-test-result.is-fail{color:#cf1322}@media (max-width: 860px){.parser-route-grid{grid-template-columns:1fr}}.trade-config{display:flex;flex-direction:column;gap:14px;margin-top:12px}.trade-config-group{border:1px solid #eef0f4;border-radius:12px;padding:14px 16px 4px;background:#fafbfc}.trade-config-group h3{display:flex;align-items:center;gap:6px;margin:0 0 14px;font-size:15px;font-weight:600;color:#1f1f1f}.trade-config-group>p{margin:0 0 14px;color:#8c8c8c;font-size:13px;line-height:1.45}.trade-config-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.trade-field-label{display:flex;align-items:center;gap:6px;margin-bottom:6px;color:#1f1f1f;font-size:14px;font-weight:500;line-height:1.4}.field-hint{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:0;border-radius:50%;background:transparent;color:#8c8c8c;cursor:help}.field-hint:hover,.field-hint:focus-visible{color:#1677ff;outline:none}.trade-config .ant-input-number,.trade-config .ant-input-number-group-wrapper,.trade-config .ant-input{width:100%}@media (max-width: 720px){.trade-config-grid{grid-template-columns:1fr}}.special-rule-list{display:flex;flex-direction:column;gap:12px;margin-top:12px;max-height:min(70vh,720px);overflow:auto;padding-right:4px}.special-rule-card{border:1px solid #eef0f4;border-radius:12px;padding:14px 16px;background:#fafbfc}.special-rule-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}.special-rule-head h3{margin:0 0 4px;font-size:15px;font-weight:600;color:#1f1f1f}.special-rule-head p{margin:0;color:#8c8c8c;font-size:13px;line-height:1.45}.special-rule-params{display:flex;flex-wrap:wrap;gap:12px}.conn-card{display:flex;flex-direction:column;align-items:stretch;gap:14px;min-height:148px;padding:16px;background:#fff;border:1px solid #eef0f4;border-radius:16px}.conn-card-top{display:flex;align-items:flex-start;gap:12px;width:100%}.conn-card-copy{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:4px}.conn-card-top .conn-status{flex:0 0 auto;margin-left:auto;padding-top:2px;white-space:nowrap}.conn-card-top .conn-status.is-spacer{min-width:0;min-height:0}.conn-desc{margin:0;color:#8c8c8c;font-size:13px;line-height:1.4}.conn-config-btn.ant-btn{margin-top:auto;width:100%;height:36px;color:#1677ff;border-color:#91caff;background:#fff}.conn-config-btn.ant-btn:hover,.conn-config-btn.ant-btn:focus{color:#1677ff!important;border-color:#1677ff!important;background:#f0f5ff!important}.conn-modal-enable{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0 4px;padding:10px 12px;border:1px solid #eef0f4;border-radius:10px;background:#fafbfc;color:#1f2329;font-weight:600}.conn-modal-enable .ant-radio-group{display:inline-flex;flex:0 1 auto}.conn-modal-enable .ant-radio-button-wrapper{padding-inline:12px}.conn-card.is-wide{grid-column:span 2;min-height:200px}.conn-icon{display:grid;place-items:center;flex:0 0 auto;width:48px;height:48px;border-radius:12px;background:#f5f7fa;color:#1677ff}.conn-icon svg{width:28px;height:28px}.conn-icon img{width:30px;height:30px;object-fit:contain}.conn-card:hover{border-color:#d6e4ff;box-shadow:0 8px 24px #1677ff14}.conn-icon .anticon{font-size:24px}.conn-icon.is-discord{background:#eef2ff;color:#5865f2}.conn-icon.is-binance{background:#181a20;color:#f3ba2f}.conn-icon.is-binance-test{background:#f3ba2f;color:#181a20}.conn-icon.is-bitget{background:#111827;color:#00f0ff}.conn-icon.is-bitget-demo{background:#00f0ff;color:#111827}.conn-icon.is-telegram{background:#e6f4ff;color:#1677ff}.conn-icon.is-gear{background:#f5f7fa;color:#8c8c8c}.conn-card h3{margin:0;color:#1f2329;font-size:15px;font-weight:650;line-height:1.3;text-align:left}.conn-status{display:inline-flex;align-items:center;gap:6px;min-height:18px;font-size:12px;font-weight:600}.conn-status-dot{width:8px;height:8px;border-radius:50%}.conn-status.is-off{color:#ef4444}.conn-status.is-off .conn-status-dot{background:#ef4444}.conn-status.is-on{color:#16a34a}.conn-status.is-on .conn-status-dot{background:#16a34a}.conn-status.is-down{color:#dc2626}.conn-status.is-down .conn-status-dot{background:#dc2626;box-shadow:0 0 0 3px #dc26262e}.conn-status.is-paused{color:#d97706}.conn-status.is-paused .conn-status-dot{background:#d97706}.conn-tags{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:8px}.conn-tag{padding:2px 10px;border:1px solid #eef0f4;border-radius:999px;background:#f5f7fa;color:#646a73;font-size:12px}.module-back{margin-bottom:12px}.token-row{display:flex;gap:32px;align-items:flex-start}.tg-qr-panel{display:flex;flex-direction:column;align-items:center;gap:8px;min-width:180px;padding:8px 0 0}.tg-qr{width:168px;height:168px;background:#fff;border:1px solid #eef0f4;border-radius:12px;padding:8px}.dt-hint{margin:0 0 12px;color:#8c8c8c;font-size:13px}@media (max-width: 1200px){.conn-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 760px){.conn-grid{grid-template-columns:1fr}.conn-card.is-wide{grid-column:span 1}.token-row{flex-direction:column}.ch-head{flex-direction:column;align-items:stretch}.ch-search{width:100%}}.parse-debug-form{padding:16px;display:flex;flex-direction:column;gap:12px}.parse-debug-actions{display:flex;gap:12px;align-items:center}.parse-debug-actions .ant-input{flex:1}.parse-debug-actions .ant-btn{flex-shrink:0;min-width:88px}.parse-debug-results{display:grid;grid-template-columns:1fr 1fr;gap:12px}.parse-debug-fields{padding:16px;display:flex;flex-direction:column;gap:8px}.parse-debug-row{display:flex;justify-content:space-between;gap:16px;font-size:13px;line-height:1.5}.parse-debug-row span{color:#8c8c8c;flex-shrink:0}.parse-debug-row strong{font-weight:600;text-align:right;word-break:break-all}.parse-debug-error{color:#ef4444;font-size:13px}.parse-debug-raw-label{margin-top:8px;color:#8c8c8c;font-size:12px}.parse-debug-raw{margin:0;max-height:280px;overflow:auto;padding:12px;background:#f7f8fa;border:1px solid #eef0f4;border-radius:8px;font-size:12px;line-height:1.45;color:#1f2329}@media (max-width: 960px){.parse-debug-results{grid-template-columns:1fr}}.channel-edit-modal-wrap,.channel-edit-modal-wrap .ant-modal-mask,.channel-edit-modal-wrap .ant-modal-wrap{z-index:1200!important}.channel-edit-title{display:flex;flex-direction:column;gap:4px;padding-right:12px}.channel-edit-title-main{color:#1f2329;font-size:16px;font-weight:650;line-height:1.3}.channel-edit-title-sub{color:#8c8c8c;font-size:13px;font-weight:400;line-height:1.4}.channel-edit-form{display:flex;flex-direction:column;gap:12px}.channel-edit-section{padding:14px 14px 4px;border:1px solid #eef0f4;border-radius:12px;background:#fff}.channel-edit-section-title{margin:0 0 10px;color:#1f2329;font-size:13px;font-weight:650}.channel-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.channel-edit-route{grid-column:1 / -1}.channel-route-label{display:inline-flex;align-items:center;gap:6px}.channel-route-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-family:system-ui,Segoe UI,Microsoft YaHei,sans-serif;letter-spacing:0}.channel-route-row{display:flex;align-items:center;gap:8px;min-width:0;min-height:44px;padding:6px 8px;border:1px solid #dce3df;border-radius:10px;background:#fff;color:#202824}.channel-route-row.is-locked{color:#67736d}.channel-route-mark{width:22px;height:22px;flex:0 0 auto}.channel-route-mark svg{width:16px;height:16px}.channel-route-name{flex:1 1 auto;min-width:0;font-size:13px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}@media (max-width: 480px){.channel-route-row{display:grid;grid-template-columns:22px minmax(0,1fr);column-gap:8px;row-gap:6px;align-items:center}.channel-route-name{overflow-wrap:normal}.channel-route-row>:last-child{grid-column:1 / -1;justify-self:end}}.ch-routes{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.channel-edit-section:has(.channel-edit-switches){padding-bottom:12px}.channel-edit-switches{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;padding-bottom:2px}.channel-edit-switch-item{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:32px;padding:8px 12px;border:1px solid #eef0f4;border-radius:10px;background:#fafbfc}.channel-edit-switch-label{color:#1f2329;font-size:13px;font-weight:600}@media (max-width: 640px){.channel-edit-switches{grid-template-columns:1fr}}.channel-id-readonly.ant-input[disabled],.channel-id-readonly.ant-input-disabled{color:#646a73;background:#f5f7fa;border-color:#eef0f4;cursor:default}@media (max-width: 640px){.channel-edit-grid{grid-template-columns:1fr}}.chat-page{display:flex;flex-direction:column;height:100vh;padding-bottom:16px;overflow:hidden}.chat-page .page-heading{margin-bottom:8px}.chat-page .title{font-size:18px}.chat-shell{flex:1;display:grid;grid-template-columns:280px minmax(0,1fr);grid-template-rows:minmax(0,1fr);min-height:0;background:#fff;border:1px solid #eef0f4;border-radius:10px;overflow:hidden}.chat-shell.has-detail{grid-template-columns:280px minmax(0,1fr) minmax(320px,42%)}.chat-list,.chat-thread,.chat-detail{min-width:0;min-height:0;height:100%}.chat-list{overflow:auto;border-right:1px solid #eef0f4;background:#fff}.chat-list-item{display:flex;width:100%;gap:10px;padding:12px 14px;border:0;border-bottom:1px solid #f5f7fa;background:#fff;text-align:left;cursor:pointer}.chat-list-item:hover{background:#f5f7fa}.chat-list-item.is-on{background:#e6f4ff}.chat-list-item.is-empty{opacity:.45}.chat-avatar{position:relative;flex:0 0 36px;width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:#e6f4ff;color:#1677ff;font-size:14px;font-weight:700}.chat-unread-dot{position:absolute;top:-1px;right:-1px;width:9px;height:9px;border-radius:50%;background:#e11d48;box-shadow:0 0 0 2px #fff;pointer-events:none}.chat-list-item.is-on .chat-unread-dot{box-shadow:0 0 0 2px #e6f4ff}.chat-list-main{min-width:0;flex:1;display:flex;flex-direction:column;gap:4px}.chat-list-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.chat-list-top strong{min-width:0;overflow:hidden;color:#1f2329;font-size:13px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.chat-list-top span{flex:0 0 auto;color:#8c8c8c;font-size:11px;white-space:nowrap}.chat-list-preview{overflow:hidden;color:#8c8c8c;font-size:12px;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}.chat-thread{display:flex;flex-direction:column;overflow:hidden;background:#f5f7fa}.chat-detail{display:flex;flex-direction:column;overflow:hidden;background:#fff;border-left:1px solid #eef0f4}.chat-detail-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 16px;min-height:48px;border-bottom:1px solid #eef0f4}.chat-detail-head strong{font-size:14px;font-weight:650}.chat-detail-close{width:28px;height:28px;border:0;border-radius:8px;background:transparent;color:#8c8c8c;font-size:22px;line-height:1;cursor:pointer}.chat-detail-close:hover{background:#f5f7fa;color:#1f2329}.chat-detail-body{flex:1;min-height:0;overflow:auto}.chat-detail .detail-block:first-child{border-top:0}.chat-thread-head{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 16px;min-height:48px;background:#fff;border-bottom:1px solid #eef0f4}.chat-thread-who{min-width:0;display:flex;align-items:baseline;gap:8px}.chat-thread-who .sub{display:inline}.chat-thread-head strong{font-size:14px;font-weight:650}.chat-search{position:relative;z-index:6;flex:0 1 320px;min-width:180px;max-width:360px}.chat-search-box{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:32px;padding:3px 10px;border:1px solid #eef0f4;border-radius:8px;background:#f5f7fa;cursor:text}.chat-search-box.is-on{border-color:#1677ff;background:#fff}.chat-search-icon{color:#8c8c8c;font-size:13px}.chat-search-box input{flex:1 1 72px;min-width:72px;height:24px;border:0;padding:0;background:transparent;color:#1f2329;font-size:13px;outline:none}.chat-search-chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:0 6px;height:22px;border:0;border-radius:4px;background:#e6f4ff;color:#1677ff;font-size:12px;font-weight:650;line-height:22px;cursor:pointer}.chat-search-chip-x{font-size:14px;font-weight:400;line-height:1}.chat-search-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:7;width:min(280px,100vw - 48px);padding:8px 6px;border:1px solid #eef0f4;border-radius:12px;background:#fff;box-shadow:0 10px 28px #0f172a1f}.chat-search-menu-title{padding:4px 10px 0;color:#1f2329;font-size:12px;font-weight:650}.chat-search-menu-note{padding:2px 10px 8px;color:#8c8c8c;font-size:11px}.chat-search-option{display:flex;flex-direction:column;gap:2px;width:100%;padding:8px 10px;border:0;border-radius:8px;background:transparent;text-align:left;cursor:pointer}.chat-search-option:hover,.chat-search-option.is-on{background:#e6f4ff}.chat-search-option-main{color:#1f2329;font-size:13px;font-weight:650}.chat-search-option-sub{color:#8c8c8c;font-size:12px}.chat-thread-body{flex:1;min-height:0;overflow:auto;padding:16px;display:flex;flex-direction:column}.chat-older{margin-bottom:8px;color:#8c8c8c;font-size:12px;text-align:center}.chat-bubble{display:block;align-self:flex-start;width:auto;max-width:min(640px,78%);margin:0 0 10px;padding:10px 12px;border:1px solid #eef0f4;border-radius:4px 12px 12px;background:#fff;text-align:left;cursor:pointer}.chat-bubble:hover,.chat-bubble.is-on{border-color:#91caff;background:#e6f4ff}.chat-bubble-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;color:#8c8c8c;font-size:11px}.chat-reply{margin-bottom:6px;padding-left:8px;border-left:2px solid #91caff;color:#8c8c8c;font-size:12px}.chat-bubble-text{color:#1f2329;font-size:13px;line-height:1.65;white-space:pre-wrap;word-break:break-word}.chat-photo{max-width:220px;max-height:160px}@media (max-width: 760px){.chat-shell{grid-template-columns:1fr;grid-template-rows:220px minmax(0,1fr)}.chat-shell.has-detail{grid-template-columns:1fr;grid-template-rows:160px minmax(0,1fr) minmax(220px,42%)}.chat-list{border-right:0;border-bottom:1px solid #eef0f4}.chat-thread-head{flex-wrap:wrap}.chat-search{flex:1 1 100%;max-width:none}}@property --spread{syntax: "<number>"; inherits: true; initial-value: 20;}@property --turn{syntax: "<angle>"; inherits: true; initial-value: 0deg;}.bal{--spread: 20;--turn: 0deg;touch-action:none;-webkit-user-select:none;user-select:none}.bal.is-spring{transition:--spread .54s cubic-bezier(.18,1.35,.32,1),--turn .54s cubic-bezier(.18,1.35,.32,1)}.bal-defs{position:absolute;width:0;height:0;overflow:hidden}.bal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.bal-mark{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:72px}.bal-goo{position:relative;width:56px;height:56px;filter:url(#bal-goo);transform:rotate(var(--turn))}.bal[data-phase=work] .bal-goo{animation:bal-spin .85s linear infinite}@keyframes bal-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.bal-drop{position:absolute;left:50%;top:50%;width:10px;height:10px;margin-left:-5px;margin-top:-5px;border-radius:50%;background:#1677ff;transform:translate3d(var(--dx),var(--dy),0)}.bal-drop:nth-child(1){--dx: 0px;--dy: calc(var(--spread) * -1px)}.bal-drop:nth-child(2){--dx: calc(var(--spread) * .95px);--dy: calc(var(--spread) * -.31px)}.bal-drop:nth-child(3){--dx: calc(var(--spread) * .59px);--dy: calc(var(--spread) * .81px)}.bal-drop:nth-child(4){--dx: calc(var(--spread) * -.59px);--dy: calc(var(--spread) * .81px)}.bal-drop:nth-child(5){--dx: calc(var(--spread) * -.95px);--dy: calc(var(--spread) * -.31px)}.bal[data-phase=armed] .bal-drop,.bal[data-phase=work] .bal-drop{background:#0958d9}.bal-hint{color:#8c8c8c;font-size:12px;line-height:1.2;white-space:nowrap}.bal[data-phase=armed] .bal-hint{color:#0958d9}.bal-pull{overflow:hidden;margin-top:8px}.bal-shift{transform:translateZ(0)}.bal.is-spring .bal-shift{transition:transform .54s cubic-bezier(.18,1.35,.32,1)}.bal-read{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px 12px;min-height:36px}.bal-now,.bal-delta,.bal-day{font-variant-numeric:tabular-nums}.bal-now{font-size:28px;font-weight:700;letter-spacing:-.4px;line-height:1.1}.bal-delta,.bal-day{color:#8c8c8c;font-size:13px}.bal-delta.pos,.bal-now.pos{color:#16a34a}.bal-delta.neg,.bal-now.neg{color:#ef4444}.bal-chart{display:block;width:100%;height:220px;margin-top:8px;overflow:visible}.bal-empty{margin-top:28px;color:#8c8c8c;font-size:13px}.bal-spans{display:flex;justify-content:center;flex-wrap:wrap;gap:4px;margin-top:10px}.bal-span{border:0;background:transparent;color:#8c8c8c;font-size:13px;line-height:1.2;padding:6px 12px;border-radius:999px;cursor:pointer}.bal-span.is-on{background:#eceff3;color:#111;font-weight:600}
