:root{--color-primary:#2563eb;--color-primary-strong:#1d4ed8;--color-accent:#0f766e;--color-danger:#dc2626;--color-success:#059669;--color-warning:#d97706;--color-ink:#111827;--color-text:#1f2937;--color-muted:#667085;--color-faint:#98a2b3;--color-line:#d9e2ec;--color-line-soft:#e8edf3;--color-page:#eef2f7;--color-surface:#fff;--color-surface-subtle:#f8fafc;--color-surface-raised:#fbfdff;--shadow-1:0 1px 2px #0f172a0f;--shadow-2:0 8px 24px #0f172a14;--radius-sm:6px;--radius-md:8px;--radius-lg:10px;--radius-xl:14px;--sidebar-width:232px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;font-size:16px}body{min-height:100vh;color:var(--color-text);background:linear-gradient(90deg, #0f172a09 1px, transparent 1px), linear-gradient(180deg, #f8fafc 0%, var(--color-page) 42%, #e9eef6 100%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-size:24px 24px,auto;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;overflow-x:hidden}#root,.app-shell{min-height:100vh}.app-shell,.app-main{background:0 0}.app-content{width:100%;max-width:1500px;margin:0 auto;padding:20px 24px 36px}.app-sider{border-right:1px solid #ffffff14;box-shadow:8px 0 28px #0f172a29;background:#101828!important}.app-sider .ant-layout-sider-trigger{background:#111827;border-top:1px solid #ffffff14}.app-sider .ant-menu{color:#cbd5e1;padding:10px 10px 0}.app-sider .ant-menu-item{color:#cbd5e1!important;margin-block:4px!important}.app-sider .ant-menu-item:hover{color:#fff!important;background:#ffffff14!important}.app-sider .ant-menu-item-selected{box-shadow:inset 3px 0 #60a5fa;color:#fff!important;background:#1d4ed8!important}.brand{border-bottom:1px solid #ffffff14;min-height:76px;padding:18px}.brand-collapsed{padding:18px 8px}.brand-mark{color:#fff;background:#2563eb;border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;display:inline-flex;box-shadow:0 10px 22px #2563eb47}.brand-mark-small{width:30px;height:30px;font-size:15px}.brand-title{color:#fff;font-size:14px;font-weight:700;line-height:1.35}.brand-subtitle{color:#94a3b8;font-size:11px}.app-header{border-bottom:1px solid var(--color-line);height:56px;box-shadow:var(--shadow-1);z-index:100;align-items:center;display:flex;position:sticky;top:0;background:#fffffff5!important;padding:0 14px!important}.header-icon-button{border:1px solid var(--color-line);border-radius:var(--radius-md);width:44px;height:44px;color:var(--color-ink);cursor:pointer;touch-action:manipulation;background:#fff;justify-content:center;align-items:center;display:inline-flex}.page-loading{justify-content:center;align-items:center;min-height:360px;display:flex}.fade-in{animation:.18s ease-out fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.page-title-row{border:1px solid var(--color-line);border-radius:var(--radius-xl);min-height:72px;box-shadow:var(--shadow-1);background:#ffffffe6;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;padding:16px 18px;display:flex}.page-title-row h1,.page-title-row h2,.page-title-row h3,.page-title-row h4,.dashboard-hero-title{letter-spacing:0;color:var(--color-ink)!important;margin:0!important}.page-title-row .ant-typography-secondary,.dashboard-hero .ant-typography-secondary{color:var(--color-muted)!important}.ant-card{transition:border-color .16s,box-shadow .16s,transform .16s;overflow:hidden;border:1px solid var(--color-line)!important;border-radius:var(--radius-lg)!important;background:var(--color-surface)!important;box-shadow:var(--shadow-1)!important}@media (hover:hover){.ant-card:hover{box-shadow:var(--shadow-2)!important;border-color:#c7d2e2!important}}.ant-card-head{background:var(--color-surface-subtle);border-bottom:1px solid var(--color-line-soft)!important;min-height:46px!important;padding:0 16px!important}.ant-card-head-title{color:#344054;font-size:14px;font-weight:700;padding:12px 0!important}.ant-card-body{padding:16px!important}.dashboard-hero{margin-bottom:14px;background:linear-gradient(90deg,#2563eb14,#0000 58%),#fff!important;border-color:#c7d7fe!important}.dashboard-hero-title{align-items:center;gap:8px;display:flex}.dashboard-hero-actions{justify-content:flex-end;display:flex}.dashboard-shortcuts .ant-card-body,.trade-action-card .ant-card-body{text-align:center}.dashboard-shortcuts .ant-card-body{padding:14px!important}.trade-action-card{margin-bottom:14px}.trade-action-card .ant-card-body{padding:24px 16px!important}.trade-rule-block,.transaction-preview{border:1px solid var(--color-line);border-radius:var(--radius-md);background:#fff;padding:12px}.transaction-preview{background:#eff6ff;border-color:#bfdbfe;padding:16px}.backup-summary-panel,.detail-summary-tile,.detail-nested-panel{border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-subtle);padding:14px}.backup-summary-panel{margin-bottom:16px}.detail-summary-tile{text-align:center;min-height:112px}.detail-info-card{box-shadow:none!important}.detail-nested-panel{background:#fff;margin-bottom:12px}.stat-card,.metric-tile,.snapshot-tile,.snapshot-index,.provider-card,.data-source-card,.ashare-metric,.breadth-item,.research-metric,.research-risk-card,.research-capability-card,.research-pending-module,.global-metric,.global-capability-card,.market-rule-card,.market-read-card,.global-next-card{border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface)}.stat-card,.metric-tile{min-height:92px;padding:12px}.ant-statistic-title{color:var(--color-muted)!important;margin-bottom:6px!important;font-size:12px!important}.ant-statistic-content,.snapshot-price,.index-row-price,.global-price-line,.research-metric strong,.global-metric strong,.ashare-metric strong,.breadth-item strong{font-variant-numeric:tabular-nums;font-family:DIN Alternate,Consolas,SFMono-Regular,monospace}.ant-statistic-content{color:var(--color-ink);font-weight:760;font-size:22px!important;line-height:1.15!important}.stock-up,.index-row-price.is-up,.change-rate.is-up,.metric-up-text,.market-red{font-weight:700;color:var(--color-danger)!important}.stock-down,.index-row-price.is-down,.change-rate.is-down,.metric-down-text,.market-green{font-weight:700;color:var(--color-success)!important}.stock-flat{color:var(--color-muted)}.metric-up,.breadth-item.up,.change-pill.is-up,.metric-high,.stat-high{background:#fff7f7!important;border-color:#fecaca!important}.metric-down,.breadth-item.down,.change-pill.is-down,.metric-low,.stat-low{background:#f0fdf4!important;border-color:#bbf7d0!important}.stat-open,.metric-price,.breadth-item.amount{background:#eff6ff!important;border-color:#bfdbfe!important}.stat-close,.breadth-item.flat{border-color:var(--color-line)!important;background:#f8fafc!important}.source-public{color:var(--color-warning)}.source-official{color:var(--color-success)}.ant-btn{touch-action:manipulation;min-height:36px;font-weight:600;border-radius:var(--radius-md)!important;box-shadow:none!important}.ant-btn-primary{background:var(--color-primary)!important;border-color:var(--color-primary)!important}.ant-btn-primary:hover{background:var(--color-primary-strong)!important;border-color:var(--color-primary-strong)!important}.ant-tag{margin-inline-end:4px;font-size:12px;font-weight:600;border-radius:var(--radius-sm)!important;padding:2px 7px!important}.ant-input,.ant-input-number,.ant-picker,.ant-select-selector,.ant-segmented{border-radius:var(--radius-md)!important}.ant-input,.ant-input-number,.ant-picker,.ant-select-selector{border-color:var(--color-line)!important}.ant-input:focus,.ant-picker-focused,.ant-select-focused .ant-select-selector{border-color:var(--color-primary)!important;box-shadow:0 0 0 3px #2563eb1f!important}.ant-table{font-variant-numeric:tabular-nums;overflow:hidden;border-radius:var(--radius-md)!important}.ant-table-thead>tr>th{white-space:nowrap;font-size:12px;color:#475467!important;border-bottom:1px solid var(--color-line)!important;background:#f8fafc!important;padding:10px 12px!important;font-weight:700!important}.ant-table-tbody>tr>td{font-size:13px;border-bottom:1px solid var(--color-line-soft)!important;padding:10px 12px!important}.ant-table-tbody>tr:hover>td{background:#eff6ff!important}.ant-list-item{border-block-end-color:var(--color-line-soft)!important}.ant-alert{border-radius:var(--radius-md)!important}.ant-modal-content,.ant-drawer-content{border-radius:var(--radius-xl)!important}.ant-modal-header,.ant-drawer-header{border-bottom:1px solid var(--color-line)!important;background:#f8fafc!important}.ant-modal-body,.ant-drawer-body{background:#fff}.stats-container{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.market-snapshot{margin-bottom:14px}.snapshot-tile,.snapshot-index{min-height:94px;padding:12px}.snapshot-price{color:var(--color-ink);margin:8px 0 2px;font-size:22px;font-weight:760}.index-panel-card .ant-card-extra{margin-left:8px}.index-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.index-row-card{text-align:left;cursor:pointer;border:1px solid var(--color-line);border-radius:var(--radius-md);background:#fff;justify-content:space-between;align-items:stretch;gap:12px;width:100%;min-height:112px;padding:12px;transition:border-color .16s,background .16s,box-shadow .16s;display:flex}.index-row-card:hover,.index-row-card:focus-visible{border-color:#93c5fd;outline:none;box-shadow:0 0 0 3px #2563eb1f}.index-row-card.selected{background:#eff6ff;border-color:#93c5fd}.index-row-main{flex:1;min-width:0}.index-row-title,.board-name-row,.research-stock-head,.global-quote-head,.market-breadth-hero-head,.research-capability-head,.global-capability-head,.data-source-card-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.index-row-price{color:var(--color-ink);margin:9px 0 7px;font-size:23px;font-weight:780;line-height:1.12}.index-row-meta{color:var(--color-muted);flex-wrap:wrap;gap:5px 10px;font-size:11px;line-height:1.4;display:flex}.index-row-change{flex-direction:column;justify-content:center;align-items:flex-end;gap:8px;min-width:72px;display:flex}.change-pill,.change-rate{border-radius:var(--radius-sm);white-space:nowrap;align-items:center;gap:2px;font-family:DIN Alternate,Consolas,monospace;font-weight:760;display:inline-flex}.change-pill{padding:4px 7px;font-size:12px}.change-rate{font-size:14px}.market-detail-card{min-height:556px}.market-chart{border:1px solid var(--color-line);border-radius:var(--radius-md);background:#fff;min-height:360px;padding:8px}.market-chart-loading{justify-content:center;align-items:center;min-height:340px;display:flex}.provider-card,.data-source-card{flex-direction:column;gap:8px;min-height:112px;padding:12px;display:flex}.settings-row{justify-content:space-between;align-items:center;gap:16px;min-height:58px;display:flex}.settings-row-desc{color:var(--color-muted);margin-top:4px;font-size:12px}.settings-collapse{border-color:var(--color-line);border-radius:var(--radius-lg);background:#fff}.settings-collapse .ant-collapse-header{min-height:52px;align-items:center!important}.ashare-profile-card,.market-breadth-hero,.research-hero-card,.global-research-hero{min-height:100%;background:#fff!important;border-color:#bfdbfe!important}.ashare-metric,.breadth-item,.research-metric,.global-metric{flex-direction:column;justify-content:space-between;gap:5px;min-height:72px;padding:10px;display:flex}.ashare-metric span,.ashare-metric em,.breadth-item span,.breadth-item em,.research-metric span,.global-metric span{color:var(--color-muted);font-size:12px;font-style:normal}.ashare-metric strong,.breadth-item strong,.research-metric strong,.global-metric strong{color:var(--color-ink);font-size:17px;font-weight:760}.ashare-profile-desc{margin:14px 0}.breadth-ratio{background:#f1f5f9;border-radius:999px;height:12px;margin-bottom:14px;display:flex;overflow:hidden}.breadth-ratio-up{background:var(--color-danger)}.breadth-ratio-flat{background:#cbd5e1}.breadth-ratio-down{background:var(--color-success)}.market-breadth-hero-head,.research-stock-head,.global-quote-head{margin-bottom:14px}.market-breadth-hero-head>div,.research-stock-head>div,.global-quote-head>div{flex-direction:column;gap:4px;min-width:0;display:flex}.market-breadth-hero-head strong{color:var(--color-ink);font-size:32px;line-height:1}.research-stock-head strong,.global-quote-head strong{color:var(--color-ink);text-overflow:ellipsis;white-space:nowrap;font-size:25px;line-height:1.14;overflow:hidden}.global-price-line{margin-bottom:14px;font-size:34px;font-weight:780;line-height:1}.board-rank{width:26px;height:26px;color:var(--color-primary);background:#eff6ff;border-radius:999px;justify-content:center;align-items:center;font-size:12px;font-weight:760;display:inline-flex}.board-main{min-width:0}.board-name-row .ant-typography{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.board-meta{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.board-extra{min-width:92px;color:var(--color-muted);font-variant-numeric:tabular-nums;flex-direction:column;align-items:flex-end;gap:2px;font-size:12px;display:flex}.market-breadth-list .ant-list-item,.market-stock-rank-list .ant-list-item,.research-mini-list .ant-list-item{padding:9px 0}.market-breadth-row{grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:58px;display:grid}.market-stock-rank-row{font-variant-numeric:tabular-nums;grid-template-columns:28px minmax(80px,1fr) 64px 64px 78px minmax(72px,auto);align-items:center;gap:8px;width:100%;min-height:38px;display:grid}.market-read-card{background:#f8fafc;flex-direction:column;gap:6px;margin-top:14px;padding:12px;line-height:1.6;display:flex}.market-extension-list,.research-score-stack{flex-direction:column;gap:10px;display:flex}.market-extension-list>div{align-items:flex-start;gap:8px;min-height:32px;display:flex}.market-guide-card{min-height:124px}.market-guide-card .ant-progress,.research-score-stack .ant-progress{margin:6px 0 0}.research-holding-link{border-radius:var(--radius-md);background:#eff6ff;border:1px solid #bfdbfe;margin-top:14px;padding:10px 12px}.research-risk-card,.research-capability-card,.research-pending-module,.global-capability-card{flex-direction:column;gap:8px;min-height:126px;padding:14px;display:flex}.global-capability-card{min-height:180px}.research-tag-cloud{flex-wrap:wrap;gap:6px 4px;display:flex}.research-rank-row{font-variant-numeric:tabular-nums;grid-template-columns:28px minmax(88px,1fr) 86px minmax(80px,1fr);align-items:center;gap:8px;width:100%;min-height:38px;display:grid}.global-next-card{min-height:120px}.global-next-card .ant-card-body{flex-direction:column;justify-content:space-between;gap:8px;min-height:120px;display:flex}.market-rule-card{min-height:126px;padding:12px;font-size:12px;line-height:1.65}.market-rule-title{color:var(--color-ink);margin-bottom:8px;font-size:14px;font-weight:760}.rule-blue{background:#eff6ff;border-color:#bfdbfe}.rule-green{background:#f0fdf4;border-color:#bbf7d0}.rule-orange{background:#fffbeb;border-color:#fde68a}.rule-purple{background:#faf5ff;border-color:#e9d5ff}.transaction-modal .ant-form-item{margin-bottom:14px}.transaction-modal .ant-alert{border-radius:var(--radius-md)}.holding-detail-drawer .ant-drawer-body{padding-bottom:32px}.bottom-nav{z-index:100;padding:7px 7px calc(7px + env(safe-area-inset-bottom));border-top:1px solid var(--color-line);background:#fffffffa;grid-template-columns:repeat(5,1fr);gap:4px;display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -10px 24px #0f172a1a}.bottom-nav-item{border-radius:var(--radius-md);min-width:0;min-height:50px;color:var(--color-muted);cursor:pointer;touch-action:manipulation;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:10px;font-weight:600;line-height:1.2;display:flex}.bottom-nav-item.active{color:var(--color-primary);background:#eff6ff}.bottom-nav-icon{font-size:18px;line-height:1}.color-option{border-radius:var(--radius-md);cursor:pointer;border:3px solid #0000;justify-content:center;align-items:center;width:36px;height:36px;margin-bottom:8px;margin-right:8px;display:inline-flex}.color-option.selected{border-color:#111827}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#edf2f7}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}@media (hover:hover){::-webkit-scrollbar-thumb:hover{background:#94a3b8}}@media screen and (width<=1200px){.stats-container{grid-template-columns:repeat(3,minmax(0,1fr))}}@media screen and (width<=768px){body{background:#eef2f7}.app-content{padding:12px 12px calc(86px + env(safe-area-inset-bottom))}.page-title-row{flex-direction:column;align-items:stretch;gap:10px;min-height:auto;padding:14px}.page-title-row .ant-space,.page-title-row .ant-space-item{max-width:100%}.ant-card-body{padding:14px!important}.ant-card-head{padding:0 14px!important}.stats-container{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.ant-statistic-content{font-size:18px!important}.dashboard-hero-actions{justify-content:flex-start;margin-top:12px}.index-list{grid-template-columns:1fr}.index-row-card{min-height:106px}.market-detail-card{min-height:480px}.market-chart{min-height:320px}.market-chart-loading{min-height:300px}.market-breadth-row{grid-template-columns:28px minmax(0,1fr)}.board-extra{grid-column:2;align-items:flex-start;min-width:0}.market-stock-rank-row{grid-template-columns:24px minmax(72px,1fr) 54px 62px}.market-stock-rank-row>span:nth-child(3),.market-stock-rank-row>span:nth-child(6){display:none}.research-stock-head,.global-quote-head{flex-direction:column}.research-stock-head strong,.global-quote-head strong{white-space:normal}.global-price-line{font-size:28px}.global-capability-card,.research-capability-card,.research-pending-module{min-height:auto}.holding-detail-drawer .ant-drawer-body{padding:16px 12px calc(24px + env(safe-area-inset-bottom))}.ant-btn{min-height:44px}.ant-input,.ant-input-number,.ant-picker,.ant-select-selector{min-height:44px!important}.ant-table-thead>tr>th,.ant-table-tbody>tr>td{font-size:12px;padding:8px 10px!important}.ant-modal{max-width:calc(100vw - 24px);margin:12px}.ant-modal-content{border-radius:var(--radius-lg)!important}}@media screen and (width<=375px){.stats-container{grid-template-columns:1fr}.ant-statistic-content{font-size:17px!important}}@media print{body{background:#fff}.app-sider,.app-header,.bottom-nav{display:none!important}.app-content{max-width:none;padding:0}.ant-card{box-shadow:none!important}}.dashboard-hero{color:#fff!important;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)!important;border:none!important}.dashboard-hero .ant-card-body{padding:24px!important}.dashboard-hero-title{color:#fff!important;margin:0!important}.dashboard-hero .ant-typography-secondary{color:#ffffffd9!important}.dashboard-hero-actions .ant-btn{color:#fff!important;background:#fff3!important;border-color:#ffffff4d!important}.dashboard-hero-actions .ant-btn:hover{background:#ffffff4d!important;border-color:#ffffff80!important}.metric-tile{transition:all .3s!important}.metric-tile:hover{transform:translateY(-4px);box-shadow:0 12px 24px #0000001a!important}.metric-tile .ant-statistic-title{color:#667085!important;margin-bottom:8px!important;font-size:13px!important}.metric-tile .ant-statistic-content{font-size:24px!important}.ant-progress-circle .ant-progress-text{font-size:20px!important;font-weight:700!important}.ant-card-head-title .anticon{color:#2563eb;margin-right:8px}.ant-card .ant-progress{margin-bottom:0!important}.analysis-signal-card{border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:#f8fafc;flex-direction:column;gap:10px;padding:12px;display:flex}.analysis-signal-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.analysis-signal-lines{border-top:1px dashed var(--border-subtle);gap:4px;padding-top:8px;display:grid}.analysis-action-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.analysis-action-grid .ant-tag{text-align:center;margin:0}@media (width<=768px){.dashboard-hero .ant-card-body{padding:16px!important}.dashboard-hero-title{font-size:18px!important}.metric-tile .ant-statistic-content{font-size:20px!important}.analysis-signal-head{flex-direction:column;align-items:flex-start}.analysis-action-grid{grid-template-columns:1fr}}
