.stock-signal-module{--signal-background: transparent;--signal-foreground: var(--text);--signal-card: var(--card);--signal-primary: var(--primary);--signal-muted: var(--surface);--signal-muted-foreground: var(--text-muted);--signal-border: var(--border);color-scheme:light}:root[data-theme=dark] .stock-signal-module{--signal-background: transparent;--signal-foreground: var(--text);--signal-card: var(--card);--signal-primary: var(--primary);--signal-muted: var(--surface);--signal-muted-foreground: var(--text-muted);--signal-border: var(--border);color-scheme:dark}.stock-signal-module,.stock-signal-module *{box-sizing:border-box;border-color:var(--signal-border)}.indicator-health-banner{max-width:1280px;margin:14px auto 0;padding:9px 12px;border:1px solid var(--border);border-radius:9px;display:flex;justify-content:space-between;gap:12px;color:var(--text-muted);background:var(--surface);font-size:12px;font-variant-numeric:tabular-nums}.indicator-health-banner.live{border-color:color-mix(in srgb,#0e7a51 35%,var(--border))}.indicator-health-banner.snapshot{border-color:color-mix(in srgb,#b34f00 40%,var(--border));color:#9a4a08}:root[data-theme=dark] .indicator-health-banner.snapshot{color:#ffb36b}.stock-signal-module{position:relative;min-height:100%;margin:0;background:transparent;color:var(--signal-foreground);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:14px}.stock-signal-module:before{display:none}:root[data-theme=dark] .stock-signal-module:before{display:none}:root[data-theme=dark] .stock-signal-module .module-bar,:root[data-theme=dark] .stock-signal-module .signal-card,:root[data-theme=dark] .stock-signal-module .card-identity,:root[data-theme=dark] .stock-signal-module .matrix-table th,:root[data-theme=dark] .stock-signal-module .overview-panel{background:var(--signal-card);border-color:var(--signal-border)}:root[data-theme=dark] .stock-signal-module .stock-name-wrap h2,:root[data-theme=dark] .stock-signal-module .overview-stock strong,:root[data-theme=dark] .stock-signal-module .matrix-table th,:root[data-theme=dark] .stock-signal-module .state-summary b{color:var(--signal-foreground)}:root[data-theme=dark] .stock-signal-module .matrix-table td,:root[data-theme=dark] .stock-signal-module .matrix-table th,:root[data-theme=dark] .stock-signal-module .overview-panel-heading,:root[data-theme=dark] .stock-signal-module .overview-list li{border-color:var(--signal-border)}.stock-signal-module .page-shell{max-width:1280px;padding:0;margin:0 auto}.stock-signal-module .module-bar{display:none}.stock-signal-module .brand{display:flex;gap:12px;align-items:center;font-size:15px;font-weight:650;letter-spacing:.06em}.stock-signal-module .brand-divider{margin:0 13px;color:#bdc4ce;font-weight:400}.stock-signal-module .snapshot-label{display:flex;gap:8px;align-items:center;color:#8290a0;font-size:13px}.stock-signal-module .snapshot-label>span{width:6px;height:6px;border-radius:50%;background:#a8b2be}.stock-signal-module .snapshot-label select{border:0;background:transparent;color:inherit;font:inherit;padding:0}.stock-signal-module .snapshot-label input[type=date]{border:0;background:transparent;color:inherit;font:inherit;padding:0;min-width:128px}.stock-signal-module .date-nav{display:flex;align-items:center;gap:5px}.stock-signal-module .date-nav-button{width:27px;height:27px;border:1px solid #dfe5eb;border-radius:7px;color:#718195;background:#fff;font-size:22px;line-height:20px}.stock-signal-module .date-nav-button:hover:not(:disabled){color:#079a58;border-color:#bfe6d2;background:#e8f8ef}.stock-signal-module .date-nav-button:disabled{opacity:.35;cursor:not-allowed}.stock-signal-module .bars-mark{display:inline-flex;align-items:flex-end;gap:4px;height:34px;width:36px;flex-shrink:0}.stock-signal-module .bars-mark i{width:6px;border-radius:4px;background:#08c96b}.stock-signal-module .bars-mark i:nth-child(1){height:15px;opacity:.42}.stock-signal-module .bars-mark i:nth-child(2){height:24px;opacity:.66}.stock-signal-module .bars-mark i:nth-child(3){height:34px}.stock-signal-module .bars-mark i:nth-child(4){height:21px}.stock-signal-module .bars-mark.small{height:23px;width:24px;gap:3px}.stock-signal-module .bars-mark.small i{width:4px}.stock-signal-module .bars-mark.small i:nth-child(1){height:10px}.stock-signal-module .bars-mark.small i:nth-child(2){height:17px}.stock-signal-module .bars-mark.small i:nth-child(3){height:23px}.stock-signal-module .bars-mark.small i:nth-child(4){height:14px}.stock-signal-module .board-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 0 12px}.stock-signal-module .title-line{display:flex;align-items:center;gap:10px}.stock-signal-module h1{margin:0;font-size:23px;font-weight:720;letter-spacing:-.035em;line-height:1.3}.stock-signal-module .stock-total{font-size:14px;font-weight:550;color:#7c8898;border:1px solid #e0e5eb;border-radius:7px;padding:3px 9px;margin-left:2px;background:#fff}.stock-signal-module .page-description{margin:5px 0 0 38px;font-size:14px;color:#8390a0;letter-spacing:.035em}.stock-signal-module .page-description span{color:#aab3bf;padding:0 7px}.stock-signal-module .state-summary{display:flex;gap:16px;align-items:center;padding-top:0;font-size:14px;color:#7a8697}.stock-signal-module .state-summary>span{display:flex;gap:7px;align-items:center;white-space:nowrap}.stock-signal-module .state-summary b{color:#283c51;font-size:17px;font-weight:650;margin-left:3px;font-variant-numeric:tabular-nums}.stock-signal-module .state-summary i{width:8px;height:8px;border-radius:50%}.stock-signal-module .state-summary i.green{background:#00c66a}.stock-signal-module .state-summary i.yellow{background:#ffbe25}.stock-signal-module .state-summary i.red{background:#f36b76}.stock-signal-module .reading-guide{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:0 0 12px;font-size:13px;color:#8993a3}.stock-signal-module .guide-left,.stock-signal-module .guide-right{display:flex;align-items:center;gap:8px}.stock-signal-module .guide-right{gap:7px}.stock-signal-module .guide-right b{color:#788596;font-weight:500}.stock-signal-module .guide-divider{height:12px;width:1px;background:#dfe4eb;margin:0 5px}.stock-signal-module .mini-hit{display:flex;align-items:center;justify-content:center;width:19px;height:19px;border-radius:50%;color:#efa813;background:#fff0d0}.stock-signal-module .mini-hit svg{width:12px;height:12px}.stock-signal-module .stock-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.stock-signal-module .signal-card{display:grid;grid-template-columns:120px minmax(0,1fr);background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:0 4px 20px #00000008,0 1px 3px #00000005;transition:all .22s cubic-bezier(.4,0,.2,1)}.stock-signal-module .signal-card:hover{transform:translateY(-3px);box-shadow:0 12px 32px #00000012,0 2px 6px #0000000a;border-color:var(--border-strong)}.stock-signal-module .card-heading{grid-column:1/-1;display:flex;align-items:center;gap:9px;padding:6px 10px;border-bottom:1px solid #e4e8ee;font-size:14px;font-weight:600;letter-spacing:.02em}.stock-signal-module .card-heading .bars-mark{transform:scale(.65);transform-origin:left center;width:17px;height:20px}.stock-signal-module .card-data-status{font-size:10px;font-weight:600;letter-spacing:0;padding:2px 5px;border-radius:5px;color:#0e7a51;background:color-mix(in srgb,#0e7a51 10%,transparent)}.stock-signal-module .card-data-status.delayed,.stock-signal-module .card-data-status.unavailable,.stock-signal-module .card-data-status.insufficient{color:#b34f00;background:color-mix(in srgb,#b34f00 10%,transparent)}.stock-signal-module .card-heading .card-index{margin-left:auto}.stock-signal-module .card-identity{display:flex;flex-direction:column;justify-content:space-between;padding:12px 9px;border-right:1px solid #e1e6ed;background:linear-gradient(115deg,#fff 45%,#fcfdfd)}.stock-signal-module .observing{align-self:flex-start;display:flex;align-items:center;gap:6px;padding:3px 7px;border-radius:20px;color:#00a755;background:#e4f8ec;font-size:12px;font-weight:600;line-height:1.5}.stock-signal-module .observing>span{height:6px;width:6px;border-radius:50%;background:#06bd67}.stock-signal-module .card-index{font-size:12px;color:#b3bdca;font-variant-numeric:tabular-nums;letter-spacing:.05em;font-weight:400}.stock-signal-module .stock-name-wrap{padding:11px 0 10px}.stock-signal-module .stock-name-wrap h2{margin:0;font-size:18px;line-height:1.3;letter-spacing:-.035em;font-weight:730;color:#10273d}.stock-signal-module .stock-code{margin:5px 0 0;color:#9aa4b4;letter-spacing:.035em;font-size:14px;line-height:1.3;font-weight:530;font-variant-numeric:tabular-nums}.stock-signal-module .identity-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:3px;font-size:12px}.stock-signal-module .state-text{font-weight:550}.stock-signal-module .state-text.green{color:#09a760}.stock-signal-module .state-text.yellow{color:#bb8718}.stock-signal-module .rsi-count{color:#9aa5b3;white-space:nowrap;font-size:12px}.stock-signal-module .rsi-count b{color:#7d8a9a;font-weight:600}.stock-signal-module .rsi-count>span{color:#b5bec9}.stock-signal-module .signal-matrix{min-width:0;display:flex;align-items:stretch}.stock-signal-module .matrix-scroll{height:100%;width:100%}.stock-signal-module .matrix-table{width:100%;table-layout:fixed;border-collapse:collapse;height:100%}.stock-signal-module .state-col{width:10%}.stock-signal-module .period-col{width:12%}.stock-signal-module .sell-col,.stock-signal-module .buy-col{width:15%}.stock-signal-module .matrix-table th{height:30px;padding:0;text-align:center;font-size:14px;line-height:1.3;font-weight:550;color:#273c53;background:#fcfcfd;border-right:1px solid #eef0f3;border-bottom:1px solid #e9edf1}.stock-signal-module .matrix-table .state-head{font-size:12px;color:#a3acb8;font-weight:400}.stock-signal-module .matrix-table th.action-heading{font-size:14px;font-weight:600}.stock-signal-module .matrix-table th.sell-heading{border-left:1px solid #dfe4eb}.stock-signal-module .matrix-table td{height:33px;padding:0;text-align:center;border-right:1px solid #eef0f3;border-bottom:1px solid #e9edf1;vertical-align:middle}.stock-signal-module .matrix-table tr:last-child td{border-bottom:0}.stock-signal-module .matrix-table th:last-child,.stock-signal-module .matrix-table td:last-child{border-right:0}.stock-signal-module .matrix-table tr.regime-row:hover{background:inherit}.stock-signal-module .matrix-table tr.regime-row.active-row.green{background:linear-gradient(90deg,#f2fcf64d,#f2fcf66b)}.stock-signal-module .matrix-table tr.regime-row.active-row.yellow{background:linear-gradient(90deg,#fffaf14d,#fffaf199)}.stock-signal-module .signal-lamp{display:inline-block;vertical-align:middle;height:18px;width:18px;border-radius:50%;border:1px solid #e9edf0;background:radial-gradient(circle at 35% 28%,#f5f6f8,#e9ecf0);box-shadow:inset 0 1px 2px #ffffffc9}.stock-signal-module .signal-lamp.lit.green{border-color:#00c466;background:radial-gradient(circle at 30% 24%,#a1ecc3,#33d58a 27%,#00c969 66%,#00b959);box-shadow:0 2px 8px #00c36724,inset 0 1px 2px #e5fff8b3}.stock-signal-module .signal-lamp.lit.yellow{border-color:#ffba19;background:radial-gradient(circle at 30% 24%,#ffe6a1,#ffd258 28%,#ffbf19 67%,#ffb900);box-shadow:0 2px 8px #f5b91520,inset 0 1px 2px #fff9e8c9}.stock-signal-module .signal-lamp.lit.red{border-color:#fc4656;background:radial-gradient(circle at 30% 24%,#ffb8bd,#ff6573 28%,#ff3f53 80%)}.stock-signal-module .period-hit{display:inline-flex;height:23px;width:23px;align-items:center;justify-content:center;border-radius:50%;vertical-align:middle}.stock-signal-module .period-hit.red{color:#c92a2a;background:color-mix(in srgb,#c92a2a 14%,var(--signal-card))}.stock-signal-module .period-hit.yellow{color:#8a5d00;background:color-mix(in srgb,#f5bd36 24%,var(--signal-card))}.stock-signal-module .period-hit.green{color:#0e7a51;background:color-mix(in srgb,#0e7a51 14%,var(--signal-card))}.stock-signal-module .period-hit svg{width:14px;height:14px}.stock-signal-module .period-empty{display:inline-block;height:7px;width:7px;border-radius:50%;background:#e0e3e8;vertical-align:middle}.stock-signal-module .matrix-table td.sell-cell{border-left:1px solid #dfe4eb}.stock-signal-module .matrix-table .signal-checkbox{width:17px;height:17px;border:1.6px solid #cfd5df;border-radius:4px;background:#fff;box-shadow:0 1px 2px #20344803;cursor:default;margin:0 auto;color:#03b765;opacity:1}.stock-signal-module .matrix-table .signal-checkbox:after{display:none}.stock-signal-module .matrix-table .signal-checkbox[data-checked]{border-color:#a7dac2;background:#f2fcf6;color:#06b964}.stock-signal-module .matrix-table .signal-checkbox svg{width:13px;height:13px;stroke-width:3.5}.stock-signal-module .matrix-table .signal-checkbox>span{font-size:13px;font-weight:800;line-height:1}.stock-signal-module .signal-pagination-bar{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:14px 0 12px;border-bottom:1px solid #e4e8ed}.stock-signal-module .page-range{font-size:13px;color:#8e9aab;white-space:nowrap;margin:0}.stock-signal-module .page-range b{font-weight:500;color:#52667c}.stock-signal-module .signal-pagination{display:flex;align-items:center;gap:5px;width:auto;margin:0}.stock-signal-module .signal-pagination button{min-width:34px;height:34px;padding:0 10px;border-radius:7px;font-size:13px;color:#8190a2;border:1px solid transparent;background:transparent;box-shadow:none}.stock-signal-module .signal-pagination button.active{color:#079a58;border-color:#bfe6d2;background:#e8f8ef}.stock-signal-module .signal-pagination button:disabled{color:#c2c9d3;pointer-events:none}.stock-signal-module .signal-pagination button:focus-visible{outline:2px solid #00b761;outline-offset:3px}.stock-signal-module .signal-pagination button:hover:not(:disabled){background:#ecf2ef}.stock-signal-module .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.stock-signal-module .board-footer{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:12px 1px 18px;font-size:12px;color:#929eac;line-height:1.8}.stock-signal-module .board-footer>span{display:flex;align-items:center;gap:7px;white-space:nowrap}.stock-signal-module .footer-dot{width:5px;height:5px;border-radius:50%;background:#adb9c6}.stock-signal-module .board-footer p{margin:0;text-align:right}.stock-signal-module .footer-note{display:block;color:#a1abb8}.stock-signal-module .title-line>.bars-mark{height:27px;width:28px;transform:scale(.78);transform-origin:left center;margin-right:-3px}.stock-signal-module .summary-label{color:#98a3b0;font-size:12px;margin-right:2px}.stock-signal-module .overview-section{padding-top:17px}.stock-signal-module .overview-title-line{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:10px}.stock-signal-module .overview-title-line h2{margin:0;font-size:18px;font-weight:650;letter-spacing:-.02em}.stock-signal-module .overview-title-line>span{color:#8d99a8;font-size:12px}.stock-signal-module .overview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.stock-signal-module .overview-panel{border:1px solid var(--border);border-top:3px solid var(--overview-tone);border-radius:var(--radius);background:var(--card);box-shadow:0 4px 20px #00000008,0 1px 3px #00000005;padding:0 16px 12px;min-width:0;transition:all .22s ease}.stock-signal-module .overview-panel:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000000f;border-color:var(--border-strong)}.stock-signal-module .overview-panel.red{--overview-tone:#f34e60;--overview-ink:#bb2d41;--overview-soft:#fff9fa;--overview-pill:#fff0f2}.stock-signal-module .overview-panel.yellow{--overview-tone:#f5bd36;--overview-ink:#a67410;--overview-soft:#fffdf5;--overview-pill:#fff6db}.stock-signal-module .overview-panel.green{--overview-tone:#18c272;--overview-ink:#07934d;--overview-soft:#f6fdf9;--overview-pill:#eaf9f0}.stock-signal-module .overview-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #e9edf2}.stock-signal-module .overview-panel-heading h3{display:flex;align-items:center;gap:8px;margin:0;font-size:15px;color:var(--overview-ink);font-weight:650}.stock-signal-module .overview-lamp{width:13px;height:13px;border-radius:50%;background:var(--overview-tone);box-shadow:inset 0 1px 2px #ffffff80}.stock-signal-module .overview-count{font-size:12px;font-weight:550;color:var(--overview-ink);background:var(--overview-pill);border:1px solid color-mix(in srgb,var(--overview-tone) 28%,transparent);padding:2px 9px;border-radius:20px}.stock-signal-module .overview-list{height:140px;overflow-y:auto;list-style:none;margin:0;padding:0;scrollbar-width:thin;scrollbar-color:#d4e5db transparent}.stock-signal-module .overview-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:35px;border-bottom:1px dashed #e9edf2}.stock-signal-module .overview-list li:last-child{border-bottom:0}.stock-signal-module .overview-stock{display:flex;align-items:baseline;gap:12px;min-width:0}.stock-signal-module .overview-stock strong{font-size:14px;font-weight:600;color:#24394f;white-space:nowrap}.stock-signal-module .overview-stock>span{font-size:12px;color:#94a0b2;font-variant-numeric:tabular-nums;letter-spacing:.035em}.stock-signal-module .overview-period{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:650;color:var(--overview-ink);white-space:nowrap}.stock-signal-module .overview-period>span{font-weight:400;font-size:12px;margin-right:4px;color:#9aa4b1}.stock-signal-module .overview-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;height:140px;color:#a1abb8}.stock-signal-module .overview-empty p{margin:0;font-size:13px}.stock-signal-module .empty-line{width:23px;height:3px;background:#e2e7ed;border-radius:4px}@media (min-width:1600px){.stock-signal-module .signal-card{grid-template-columns:112px minmax(0,1fr)}.stock-signal-module .card-identity{padding:14px 12px}.stock-signal-module .stock-name-wrap h2{font-size:20px}.stock-signal-module .card-heading{padding:7px 13px}.stock-signal-module .matrix-table th{height:33px}.stock-signal-module .matrix-table td{height:37px}.stock-signal-module .signal-lamp{width:21px;height:21px}.stock-signal-module .period-hit{width:26px;height:26px}.stock-signal-module .period-hit svg{width:16px;height:16px}.stock-signal-module .matrix-table .signal-checkbox{width:19px;height:19px}.stock-signal-module .matrix-table .signal-checkbox svg{width:15px;height:15px}.stock-signal-module .identity-bottom{flex-direction:column;align-items:flex-start;gap:4px}}@media (max-width:1279px){.stock-signal-module .page-shell{padding:0 22px}.stock-signal-module .stock-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stock-signal-module .signal-card{grid-template-columns:132px minmax(0,1fr)}.stock-signal-module .card-identity{padding:13px}.stock-signal-module .stock-name-wrap h2{font-size:21px}.stock-signal-module .matrix-table td{height:36px}.stock-signal-module .signal-lamp{width:21px;height:21px}.stock-signal-module .period-hit{width:26px;height:26px}.stock-signal-module .matrix-table .signal-checkbox{width:19px;height:19px}.stock-signal-module .overview-stock{gap:5px}.stock-signal-module .overview-stock strong{font-size:14px}.stock-signal-module .overview-period>span{display:none}}@media (max-width:759px){.stock-signal-module{margin-left:-16px;margin-right:-16px}.stock-signal-module .page-shell{padding:0 16px}.stock-signal-module .module-bar{height:53px}.stock-signal-module .brand{font-size:14px;gap:9px}.stock-signal-module .brand-divider{margin:0 8px}.stock-signal-module .snapshot-label{font-size:12px}.stock-signal-module .overview-section{padding-top:17px}.stock-signal-module .overview-title-line{align-items:flex-start;flex-direction:column;gap:4px}.stock-signal-module .overview-title-line h2{font-size:19px}.stock-signal-module .overview-grid{grid-template-columns:1fr;gap:10px}.stock-signal-module .overview-list{height:auto;max-height:160px}.stock-signal-module .overview-empty{height:45px;flex-direction:row;gap:8px}.stock-signal-module .overview-list li{min-height:37px}.stock-signal-module .overview-stock{gap:12px}.stock-signal-module .overview-period>span{display:inline}.stock-signal-module .board-heading{padding:22px 0 16px;align-items:flex-start;flex-direction:column;gap:12px}.stock-signal-module h1{font-size:24px}.stock-signal-module .page-description{margin-left:35px;font-size:13px}.stock-signal-module .state-summary{gap:16px}.stock-signal-module .state-summary b{font-size:15px}.stock-signal-module .stock-total{font-size:12px;padding:3px 7px}.stock-signal-module .reading-guide{flex-direction:column;align-items:flex-start;gap:8px;padding-bottom:14px;font-size:12px}.stock-signal-module .stock-grid{grid-template-columns:1fr;gap:13px}.stock-signal-module .signal-card{grid-template-columns:100px minmax(0,1fr);border-radius:11px}.stock-signal-module .card-heading{padding:7px 11px}.stock-signal-module .card-identity{padding:12px 9px}.stock-signal-module .stock-name-wrap h2{font-size:18px}.stock-signal-module .stock-code{font-size:14px}.stock-signal-module .identity-bottom{flex-direction:column;align-items:flex-start;gap:4px}.stock-signal-module .matrix-table th{height:33px}.stock-signal-module .matrix-table td{height:37px}.stock-signal-module .signal-lamp{width:19px;height:19px}.stock-signal-module .period-hit{width:23px;height:23px}.stock-signal-module .period-hit svg{width:14px;height:14px}.stock-signal-module .matrix-table .signal-checkbox{width:17px;height:17px}.stock-signal-module .matrix-table .signal-checkbox svg{width:13px;height:13px}.stock-signal-module .pagination-bar{gap:10px}.stock-signal-module .pagination-bar a{min-width:32px;height:34px}.stock-signal-module .board-footer{flex-direction:column;gap:5px}.stock-signal-module .board-footer p{text-align:left}}@media (max-width:479px){.stock-signal-module .signal-card{grid-template-columns:1fr}.stock-signal-module .card-identity{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;border-right:0;border-bottom:1px solid #e5e9ef}.stock-signal-module .stock-name-wrap{padding:0}.stock-signal-module .identity-bottom{margin-left:auto}.stock-signal-module .matrix-table th{font-size:13px}.stock-signal-module .signal-pagination-bar{align-items:flex-start;flex-direction:column}.stock-signal-module .signal-pagination button{white-space:nowrap;padding:0 8px}}@media (max-width:359px){.stock-signal-module .card-identity{grid-template-columns:1fr auto}.stock-signal-module .observing{display:none}.stock-signal-module .matrix-table td{height:39px}}@media (prefers-reduced-motion:reduce){.stock-signal-module *{transition:none!important}}:root{--bg: #f4f6fa;--bg-glow: radial-gradient(900px 420px at 50% -120px, rgba(46, 93, 245, .08) 0%, rgba(244, 246, 250, 0) 70%), radial-gradient(760px 320px at 100% 0, rgba(230, 235, 245, .6) 0%, rgba(244, 246, 250, 0) 60%);--grid-pattern: radial-gradient(rgba(27, 39, 64, .08) 1px, transparent 1px);--card: #ffffff;--card-soft: rgba(255, 255, 255, .86);--surface: #f7f9fd;--surface-hover: #f1f5fc;--topnav: rgba(255, 255, 255, .82);--text: #1b2740;--text-secondary: #5c6b85;--text-muted: #93a1b6;--border: #e6ebf3;--border-strong: #d3dbe8;--primary: #2557e0;--primary-dark: #1a41cc;--primary-soft: #edf2fc;--primary-ring: rgba(37, 87, 224, .2);--primary-grad: linear-gradient(135deg, #3d6ef8 0%, #2557e0 100%);--up: #c92a2a;--up-bg: #fdecec;--down: #0e7a51;--down-bg: #e7f6ef;--sell: #b34f00;--sell-bg: #fdf1e7;--buy: #3566e0;--buy-bg: #eaf1fd;--sh: #3b6ef3;--sh-bg: #e9f0fe;--sz: #0fa08a;--sz-bg: #e6f8f4;--bj: #b8742a;--bj-bg: #f9efe3;--warn: #c8791a;--warn-strong: #a25e0e;--warn-bg: #fbf1e2;--warn-border: #ecd7b0;--radius: 14px;--radius-sm: 9px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(27, 39, 64, .05);--shadow: 0 2px 8px rgba(27, 39, 64, .05), 0 12px 30px rgba(27, 39, 64, .05);--shadow-lg: 0 18px 48px rgba(27, 39, 64, .14);--ambient: rgba(53, 102, 224, .16), rgba(124, 92, 240, .13), rgba(18, 160, 107, .1);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--mono: "SF Mono", "Roboto Mono", ui-monospace, "Menlo", "Consolas", monospace}:root[data-theme=dark]{--bg: #090c12;--bg-glow: radial-gradient(900px 460px at 50% -120px, rgba(37, 87, 224, .22) 0%, rgba(9, 12, 18, 0) 70%), radial-gradient(760px 340px at 100% 0, rgba(124, 92, 240, .12) 0%, rgba(9, 12, 18, 0) 60%);--grid-pattern: radial-gradient(rgba(255, 255, 255, .07) 1px, transparent 1px);--card: #11151f;--card-soft: rgba(17, 21, 31, .86);--surface: #161b26;--surface-hover: #1d2432;--topnav: rgba(12, 15, 22, .72);--text: #e7ebf2;--text-secondary: #a5b0c4;--text-muted: #6d7a90;--border: #232a38;--border-strong: #303949;--primary: #4f7df0;--primary-dark: #3a65d6;--primary-soft: rgba(79, 125, 240, .14);--primary-ring: rgba(79, 125, 240, .28);--primary-grad: linear-gradient(135deg, #5a85f2 0%, #3a63d8 100%);--up: #ff6b5e;--up-bg: rgba(255, 107, 94, .14);--down: #35c58e;--down-bg: rgba(53, 197, 142, .14);--sell: #ffab55;--sell-bg: rgba(255, 171, 85, .14);--buy: #6f9bf0;--buy-bg: rgba(111, 155, 240, .14);--sh: #7ba3f0;--sh-bg: rgba(123, 163, 240, .18);--sz: #4fc5b0;--sz-bg: rgba(79, 197, 176, .16);--bj: #d9a05a;--bj-bg: rgba(217, 160, 90, .16);--warn: #f0a94a;--warn-strong: #ffbf6b;--warn-bg: rgba(240, 169, 74, .14);--warn-border: rgba(240, 169, 74, .28);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow: 0 2px 10px rgba(0, 0, 0, .35), 0 12px 32px rgba(0, 0, 0, .3);--shadow-lg: 0 20px 54px rgba(0, 0, 0, .5);--ambient: rgba(79, 125, 240, .26), rgba(124, 92, 240, .22), rgba(53, 197, 142, .16)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);background-color:var(--bg);background-image:var(--bg-glow),var(--grid-pattern);background-size:auto,24px 24px;background-attachment:fixed;color:var(--text);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color .3s ease,color .3s ease}body:before{content:"";position:fixed;top:-18%;right:-18%;bottom:-18%;left:-18%;z-index:-1;background:var(--ambient);background:radial-gradient(40% 40% at 15% 18%,var(--ambient-1, transparent),transparent 62%),radial-gradient(36% 36% at 86% 22%,var(--ambient-2, transparent),transparent 62%),radial-gradient(46% 46% at 55% 88%,var(--ambient-3, transparent),transparent 64%);animation:ambient 28s ease-in-out infinite alternate;pointer-events:none}:root[data-theme=light] body:before,:root:not([data-theme=dark]) body:before{--ambient-1: rgba(53, 102, 224, .14);--ambient-2: rgba(124, 92, 240, .12);--ambient-3: rgba(18, 160, 107, .1)}:root[data-theme=dark] body:before{--ambient-1: rgba(79, 125, 240, .22);--ambient-2: rgba(124, 92, 240, .2);--ambient-3: rgba(53, 197, 142, .14)}@keyframes ambient{0%{transform:translate3d(-1.5%,-1%,0) scale(1)}50%{transform:translate3d(1.5%,1.2%,0) scale(1.05)}to{transform:translate3d(-1%,1.8%,0) scale(1.02)}}button{font-family:inherit;cursor:pointer;border:none;background:none}input{font-family:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#c9d2e0;border-radius:10px;border:2px solid transparent;background-clip:content-box}:root[data-theme=dark] ::-webkit-scrollbar-thumb{background:#333c4d;background-clip:content-box}::selection{background:var(--primary-soft)}.topnav{position:sticky;top:0;z-index:50;height:62px;background:var(--topnav);backdrop-filter:saturate(170%) blur(16px);-webkit-backdrop-filter:saturate(170%) blur(16px);border-bottom:1px solid var(--border);box-shadow:0 1px 14px #0000000a}.topnav-inner{max-width:1280px;margin:0 auto;padding:0 28px;height:100%;display:flex;align-items:center;justify-content:space-between;gap:24px}.topnav-brand{display:flex;align-items:center;gap:12px;font-size:21px;font-weight:850;letter-spacing:1.5px;color:var(--text);white-space:nowrap;-webkit-user-select:none;user-select:none}.topnav-brand span{background:linear-gradient(120deg,var(--text) 60%,var(--primary) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.daojian-logo-svg{transition:transform .25s cubic-bezier(.34,1.56,.64,1),filter .25s ease}.topnav-brand:hover .daojian-logo-svg{transform:rotate(-6deg) scale(1.08);filter:drop-shadow(0 4px 12px rgba(46,93,245,.45))}.topnav-links{display:flex;align-items:center;gap:4px;flex:1;margin-left:28px;padding:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);box-shadow:inset 0 1px 3px #00000008;max-width:fit-content}.topnav-link{display:inline-flex;align-items:center;padding:6px 18px;border-radius:var(--radius-pill);color:var(--text-secondary);text-decoration:none;white-space:nowrap;font-size:13.5px;font-weight:600;border:1px solid transparent;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer}.topnav-link:hover{color:var(--text);background:var(--card-soft)}.topnav-link.active{color:#fff;background:var(--primary-grad);font-weight:600;box-shadow:0 3px 10px var(--primary-ring),inset 0 1px 1px #ffffff4d;border-color:#ffffff26}.topnav-right{display:flex;align-items:center;gap:12px}.cmd-trigger-btn{display:inline-flex;align-items:center;gap:8px;padding:5px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);font-size:12px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .16s ease}.cmd-trigger-btn:hover{background:var(--surface-hover);border-color:var(--border-strong);color:var(--text)}.cmd-trigger-btn kbd{font-size:11px;padding:1px 5px;background:var(--card);border:1px solid var(--border);border-radius:4px;color:var(--text-secondary);font-family:var(--mono)}.market-status{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);font-size:12px;font-weight:600;color:var(--text-secondary);-webkit-user-select:none;user-select:none}.status-dot{width:7px;height:7px;border-radius:50%}.status-dot.online{background:#12a06b;box-shadow:0 0 8px #12a06b;animation:pulse-dot 2s infinite ease-in-out}.status-dot.offline{background:var(--text-muted)}@keyframes pulse-dot{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.3);opacity:.7}}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--card-soft);color:var(--text-secondary);font-size:17px;transition:border-color .16s ease,color .16s ease,background .16s ease,transform .16s ease}.theme-toggle:hover{color:var(--text);border-color:var(--border-strong);transform:rotate(14deg)}.page{max-width:1280px;margin:0 auto;padding:32px 28px 56px;animation:pageIn .42s ease both}.page.indicators-page{max-width:1280px}@keyframes pageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-header{position:relative;z-index:30;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:12px}.page-title{margin:0;font-size:27px;font-weight:800;letter-spacing:.5px;color:var(--text);line-height:1.2;background:linear-gradient(120deg,var(--text) 40%,var(--primary) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.page-subtitle{margin:7px 0 0;font-size:13px;color:var(--text-muted);-webkit-text-fill-color:var(--text-muted)}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:16px;margin:24px 0}.stat-card{position:relative;background:var(--card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 20px #00000008,0 1px 3px #00000005;padding:18px 20px 16px;overflow:hidden;transition:all .25s cubic-bezier(.4,0,.2,1)}.stat-card:before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:var(--bar, var(--primary-grad))}.stat-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at 100% 0%,var(--glow, transparent) 0%,transparent 70%);opacity:.6;transition:opacity .25s ease}.stat-card:nth-child(1){--bar: linear-gradient(90deg, #3566e0, #6f9bf0);--glow: rgba(53, 102, 224, .12)}.stat-card:nth-child(2){--bar: linear-gradient(90deg, #e23d3d, #ff7a6b);--glow: rgba(226, 61, 61, .12)}.stat-card:nth-child(3){--bar: linear-gradient(90deg, #12a06b, #43c89b);--glow: rgba(18, 160, 107, .12)}.stat-card:nth-child(4){--bar: linear-gradient(90deg, #7c5cf0, #a78bfa);--glow: rgba(124, 92, 240, .12)}.stat-card:hover{box-shadow:0 12px 32px #00000012,0 2px 6px #0000000a;transform:translateY(-3px);border-color:var(--border-strong)}.stat-card:hover:after{opacity:1}.stat-label{font-size:13px;color:var(--text-secondary);font-weight:600;letter-spacing:.4px}.stat-value{margin-top:8px;font-size:28px;font-weight:850;color:var(--text);line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.5px}.stat-value.up{color:var(--up)}.stat-value.down{color:var(--down)}.stat-value.muted{color:var(--text-muted)}.stat-extra{margin-top:7px;font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums}.control-panel{position:relative;z-index:40;display:flex;flex-direction:column;align-items:flex-end;gap:8px}.control-toggle{display:inline-flex;align-items:center;gap:6px;background:var(--card-soft);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text-secondary);padding:7px 15px;font-size:13px;font-weight:500;box-shadow:var(--shadow-sm);transition:border-color .16s ease,color .16s ease,box-shadow .16s ease}.control-toggle:hover{color:var(--text);border-color:var(--border-strong);box-shadow:var(--shadow)}.control-toggle .caret{font-size:11px;color:var(--text-muted)}.control-body{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-end;background:var(--card-soft);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}.control-section{display:flex;flex-direction:column;gap:7px}.control-section-grow{justify-content:flex-end}.control-label{font-size:12px;color:var(--text-muted);font-weight:500}.control-input{min-width:230px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;color:var(--text);background:var(--card);transition:border-color .16s ease,box-shadow .16s ease}.control-input::placeholder{color:var(--text-muted)}.control-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring)}.match-hint{font-size:12px;color:var(--text-muted)}.trading-date-picker-wrap{position:relative;display:flex;flex-direction:column;gap:8px}.trading-date-bar{display:inline-flex;align-items:center;gap:4px}.t-date-nav-btn{width:32px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--card);color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;font-size:18px;line-height:1;cursor:pointer;transition:all .16s ease}.t-date-nav-btn:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-strong);color:var(--text)}.t-date-nav-btn:disabled{opacity:.35;cursor:not-allowed}.t-date-display-btn{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--card);color:var(--text);font-family:inherit;font-size:13.5px;font-weight:600;cursor:pointer;transition:all .16s ease}.t-date-display-btn:hover,.t-date-display-btn.active{background:var(--surface-hover);border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-ring)}.cal-icon{font-size:13px}.date-text{font-family:var(--mono);letter-spacing:.4px}.weekday-badge{font-size:11px;padding:1px 6px;border-radius:4px;background:var(--surface);color:var(--text-secondary);border:1px solid var(--border)}.date-caret{font-size:11px;color:var(--text-muted)}.recent-chips-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.recent-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);font-size:11.5px;font-family:var(--mono);font-weight:600;cursor:pointer;transition:all .16s ease}.recent-chip:hover{background:var(--surface-hover);border-color:var(--border-strong);color:var(--text)}.recent-chip.active{background:var(--primary-soft);border-color:var(--primary);color:var(--primary);box-shadow:0 1px 4px var(--primary-ring)}.chip-weekday{font-size:10px;font-family:var(--font);opacity:.75}.cal-popover{position:absolute;top:calc(100% + 6px);left:0;z-index:100;width:290px;background:var(--card);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 16px 48px #00000038,0 4px 12px #00000014;padding:14px;animation:calPopIn .18s cubic-bezier(.16,1,.3,1)}@keyframes calPopIn{0%{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.cal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.cal-title{font-size:13.5px;font-weight:700;color:var(--text);letter-spacing:.4px}.cal-month-nav{width:24px;height:24px;border-radius:4px;border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .14s ease}.cal-month-nav:hover{background:var(--surface-hover);color:var(--text)}.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:6px;text-align:center}.cal-weekday{font-size:11px;font-weight:600;color:var(--text-muted);padding:2px 0}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.cal-cell{position:relative;height:32px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--text-muted);font-family:var(--mono);font-size:12px;font-weight:500;cursor:default;transition:all .14s ease}.cal-cell.in-month.has-data{color:var(--text);font-weight:700;cursor:pointer}.cal-cell.in-month.has-data:hover{background:var(--surface-hover);border-color:var(--border)}.cal-cell.selected{background:var(--primary)!important;color:#fff!important;font-weight:800;box-shadow:0 2px 8px var(--primary-ring)}.cal-cell.today:not(.selected){border-color:var(--primary)}.data-dot{position:absolute;bottom:3px;width:4px;height:4px;border-radius:50%;background:var(--primary)}.cal-cell.selected .data-dot{background:#fff}.cal-footer{display:flex;align-items:center;justify-content:space-between;margin-top:10px;padding-top:8px;border-top:1px solid var(--border);font-size:11px;color:var(--text-muted)}.cal-legend{display:flex;align-items:center;gap:4px}.data-dot-sample{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--primary)}.cal-latest-link{border:none;background:transparent;color:var(--primary);font-size:11px;font-weight:600;cursor:pointer;padding:0}.cal-latest-link:hover{text-decoration:underline}.date-nav{display:flex;align-items:center;gap:6px}.date-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:34px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--text-secondary);font-size:16px;line-height:1;transition:border-color .16s ease,color .16s ease,background .16s ease}.date-btn:hover{color:var(--text);border-color:var(--border-strong);background:var(--surface)}.date-input{padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;color:var(--text);background:var(--card);transition:border-color .16s ease,box-shadow .16s ease}.date-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;border-radius:var(--radius-sm);padding:8px 16px;font-size:13px;font-weight:500;transition:background .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease}.btn-primary{background:var(--primary-grad);color:#fff;box-shadow:0 4px 12px var(--primary-ring)}.btn-primary:hover{background:var(--primary-dark)}.btn-ghost{background:var(--card);border-color:var(--border);color:var(--text-secondary)}.btn-ghost:hover{color:var(--text);border-color:var(--border-strong);background:var(--surface)}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.table-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 24px #0000000a,0 1px 4px #00000005;overflow:hidden;overflow-x:auto;transition:border-color .2s ease,box-shadow .2s ease}.holdings-table{width:100%;border-collapse:separate;border-spacing:0;min-width:920px}.holdings-table thead th{position:sticky;top:0;z-index:2;background:var(--surface);color:var(--text-secondary);font-weight:700;font-size:12.5px;letter-spacing:.5px;text-align:center;padding:14px 12px;border-bottom:1px solid var(--border-strong);white-space:nowrap}.holdings-table tbody tr{animation:rowIn .32s ease both;transition:background .18s ease}@keyframes rowIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.holdings-table tbody td{padding:14px 12px;border-bottom:1px solid var(--border);text-align:center;vertical-align:middle;transition:background .18s ease}.holdings-table tbody tr:last-child td{border-bottom:none}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#00000073;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;justify-content:flex-end;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.drawer-panel{width:100%;max-width:540px;height:100%;background:var(--card);box-shadow:-8px 0 36px #00000029;border-left:1px solid var(--border);display:flex;flex-direction:column;animation:slideInRight .25s cubic-bezier(.16,1,.3,1)}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-header{padding:20px 24px;display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--border);background:var(--surface)}.drawer-title-box{display:flex;flex-direction:column;gap:8px}.drawer-stock-name{display:flex;align-items:center;gap:10px}.drawer-stock-name h2{margin:0;font-size:20px;font-weight:800;color:var(--text)}.drawer-code{font-size:14px;color:var(--text-muted);font-variant-numeric:tabular-nums;font-family:var(--mono)}.drawer-price-box{display:flex;align-items:baseline;gap:10px}.drawer-price{font-size:26px;font-weight:850;font-variant-numeric:tabular-nums}.drawer-change{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.drawer-price.up,.drawer-change.up{color:var(--up)}.drawer-price.down,.drawer-change.down{color:var(--down)}.drawer-close-btn{background:var(--surface-hover);border:1px solid var(--border);color:var(--text-secondary);font-size:22px;line-height:1;width:32px;height:32px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .16s ease}.drawer-close-btn:hover{background:var(--border-strong);color:var(--text);transform:scale(1.08)}.drawer-metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:14px 24px;background:var(--surface);border-bottom:1px solid var(--border)}.drawer-metric-item{display:flex;flex-direction:column;gap:4px}.drawer-metric-item .metric-label{font-size:11.5px;color:var(--text-muted)}.drawer-metric-item .metric-val{font-size:14px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.drawer-tabs{display:flex;gap:8px;padding:14px 24px 0;border-bottom:1px solid var(--border);background:var(--card)}.drawer-tab{padding:8px 16px;font-size:13px;font-weight:600;color:var(--text-secondary);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all .2s ease}.drawer-tab:hover{color:var(--text)}.drawer-tab.active{color:var(--primary);border-bottom-color:var(--primary)}.drawer-chart-container{flex:1;padding:20px 24px;display:flex;align-items:center;justify-content:center;overflow:auto;background:var(--card)}.drawer-chart-img{max-width:100%;height:auto;border-radius:8px;border:1px solid var(--border);box-shadow:0 4px 16px #0000000d}.drawer-footer{padding:12px 24px;border-top:1px solid var(--border);background:var(--surface);font-size:12px;color:var(--text-muted);text-align:right}.drawer-footer b{color:var(--text-secondary)}.cmd-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;background:#00000080;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:flex-start;justify-content:center;padding-top:14vh;animation:cmdFadeIn .15s ease-out}@keyframes cmdFadeIn{0%{opacity:0}to{opacity:1}}.cmd-panel{width:100%;max-width:580px;background:var(--card);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 20px 60px #00000047,0 0 0 1px #ffffff14;overflow:hidden;display:flex;flex-direction:column;animation:cmdPopIn .2s cubic-bezier(.16,1,.3,1)}@keyframes cmdPopIn{0%{opacity:0;transform:scale(.96) translateY(-8px)}to{opacity:1;transform:scale(1) translateY(0)}}.cmd-header{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border);background:var(--surface)}.cmd-icon{font-size:16px;color:var(--primary)}.cmd-input{flex:1;border:none;background:transparent;color:var(--text);font-size:15px;font-family:inherit;outline:none}.cmd-input::placeholder{color:var(--text-muted)}.cmd-kbd{display:inline-flex;align-items:center;justify-content:center;padding:2px 6px;font-size:11px;font-family:var(--mono);background:var(--card);border:1px solid var(--border);border-radius:4px;color:var(--text-muted);box-shadow:0 1px 2px #0000000d}.cmd-body{max-height:360px;overflow-y:auto;padding:10px 8px}.cmd-group{margin-bottom:8px}.cmd-group-title{padding:6px 12px 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted)}.cmd-item{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-radius:8px;cursor:pointer;transition:all .12s ease}.cmd-item.selected{background:var(--primary-soft);color:var(--primary)}.cmd-item.selected .cmd-item-title{color:var(--primary-dark)}.cmd-stock-info{display:flex;align-items:center;gap:10px}.cmd-item-title{font-size:13.5px;font-weight:600;color:var(--text)}.cmd-stock-code{font-size:12.5px;font-family:var(--mono);color:var(--text-muted)}.cmd-action-hint{font-size:11.5px;color:var(--text-muted)}.cmd-item.selected .cmd-action-hint{color:var(--primary);font-weight:600}.cmd-empty{padding:18px;text-align:center;font-size:13px;color:var(--text-muted)}.cmd-footer{padding:10px 20px;border-top:1px solid var(--border);background:var(--surface);display:flex;gap:18px;font-size:11.5px;color:var(--text-muted)}.cmd-footer b{color:var(--text-secondary);font-family:var(--mono)}.price-pill{display:inline-flex;align-items:center;justify-content:flex-end;padding:3px 8px;border-radius:6px;font-variant-numeric:tabular-nums;font-weight:750;font-size:13.5px;min-width:68px;transition:all .3s ease}.price-pill.up{color:var(--up);background:var(--up-bg)}.price-pill.down{color:var(--down);background:var(--down-bg)}.price-pill.flat{color:var(--text-secondary);background:var(--surface)}.price-pill.flash-up{background:var(--up)!important;color:#fff!important;transform:scale(1.05);box-shadow:0 0 12px #e23d3d80}.price-pill.flash-down{background:var(--down)!important;color:#fff!important;transform:scale(1.05);box-shadow:0 0 12px #12a06b80}.sentiment-bar-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:12px 18px;margin:-10px 0 20px;box-shadow:0 2px 12px #00000005}.sentiment-header{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;font-weight:600;margin-bottom:8px}.sentiment-title{color:var(--text-secondary);letter-spacing:.3px}.sentiment-stats{display:flex;gap:12px;font-size:12px;font-variant-numeric:tabular-nums}.sentiment-stats .up-text{color:var(--up);font-weight:700}.sentiment-stats .flat-text{color:var(--text-muted);font-weight:600}.sentiment-stats .down-text{color:var(--down);font-weight:700}.sentiment-track{height:6px;border-radius:999px;background:var(--surface-hover);display:flex;overflow:hidden;gap:2px}.sentiment-segment{height:100%;transition:width .4s cubic-bezier(.4,0,.2,1)}.sentiment-segment.up{background:linear-gradient(90deg,#ff7a6b,var(--up))}.sentiment-segment.flat{background:var(--text-muted);opacity:.35}.sentiment-segment.down{background:linear-gradient(90deg,var(--down),#43c89b)}.range-bar-wrap{display:inline-flex;align-items:center;gap:6px;width:100%;max-width:140px}.range-label{font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums;flex:none}.range-track{position:relative;flex:1;height:4px;background:var(--surface-hover);border-radius:2px;overflow:visible}.range-fill{height:100%;background:color-mix(in srgb,var(--primary) 35%,var(--border));border-radius:2px}.range-thumb{position:absolute;top:50%;width:7px;height:7px;border-radius:50%;background:var(--primary);box-shadow:0 0 4px var(--primary-ring);transform:translate(-50%,-50%);transition:left .3s ease}.vol-cell-wrap{display:inline-flex;flex-direction:column;align-items:flex-end;gap:3px;min-width:72px}.vol-num{font-size:13px;font-weight:600}.vol-bar-track{width:100%;height:3px;background:var(--surface-hover);border-radius:2px;overflow:hidden}.vol-bar-fill{height:100%;background:linear-gradient(90deg,var(--border-strong),var(--primary));border-radius:2px;transition:width .3s ease}.col-index{width:52px;color:var(--text-muted);font-variant-numeric:tabular-nums}.col-name{width:auto;min-width:160px;text-align:left!important}.col-trade{width:80px}.col-holding{width:108px;font-variant-numeric:tabular-nums;color:var(--text-secondary)}.col-return{width:108px;font-weight:600;font-variant-numeric:tabular-nums}.name-line{display:flex;align-items:center;gap:8px}.name{font-weight:700;color:var(--text);font-size:14px}.code-line{font-size:12px;color:var(--text-muted);margin-top:2px;font-variant-numeric:tabular-nums;letter-spacing:.4px}.ex-badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:18px;border-radius:5px;font-size:11px;font-weight:700;line-height:1;flex:none}.ex-badge.sh{background:var(--sh-bg);color:var(--sh)}.ex-badge.sz{background:var(--sz-bg);color:var(--sz)}.ex-badge.bj{background:var(--bj-bg);color:var(--bj)}.ex-badge.hk{background:var(--up-bg);color:var(--up)}.watch-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:600;letter-spacing:.3px;background:color-mix(in srgb,var(--text-muted) 12%,transparent);color:var(--text-secondary);border:1px solid color-mix(in srgb,var(--text-muted) 22%,transparent);flex:none}.pool-days{color:var(--text-muted);font-size:12px}.watch-t1 .watch-badge{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-border)}.watch-t2 .watch-badge{background:var(--warn-bg);color:var(--warn-strong);border-color:var(--warn-border);font-weight:700}.watch-t1 .pool-days,.watch-t2 .pool-days{color:var(--warn);font-weight:600}.watch-t2 .pool-days{color:var(--warn-strong)}.watch-t1 td:first-child{box-shadow:inset 3px 0 0 var(--warn)}.watch-t2 td:first-child{box-shadow:inset 4px 0 0 var(--warn-strong)}.pool-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap}.pool-toolbar-label{font-size:12px;color:var(--text-muted);font-weight:500}.pool-chip{display:inline-flex;align-items:center;gap:5px;padding:6px 14px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--card);color:var(--text-secondary);font-size:13px;font-weight:500;transition:border-color .16s ease,color .16s ease,background .16s ease,box-shadow .16s ease}.pool-chip:hover{color:var(--text);border-color:var(--border-strong)}.pool-chip.active{background:var(--primary-grad);border-color:transparent;color:#fff;font-weight:600;box-shadow:0 3px 10px var(--primary-ring)}.signal-badge{display:inline-flex;align-items:center;justify-content:center;padding:3px 11px;border-radius:var(--radius-pill);font-size:12px;font-weight:700;min-width:52px}.signal-badge.buy{background:var(--buy-bg);color:var(--buy)}.signal-badge.sell{background:var(--sell-bg);color:var(--sell)}.raw-cell{font-size:12px;color:var(--text-muted);display:inline-block;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.signals-toolbar{display:flex;align-items:center;gap:10px;margin:20px 0 14px}.date-filter{min-width:160px}.date-group-row td{padding:8px 12px;background:var(--surface);color:var(--text-secondary);font-size:12px;font-weight:700;letter-spacing:.4px;border-bottom:1px solid var(--border)}.stock-row{transition:background .18s ease}.stock-row.clickable-row{cursor:pointer;-webkit-user-select:none;user-select:none}.stock-row.clickable-row:hover td{background:var(--surface-hover)}.slot-chip{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:6px;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}.slot-chip.buy{background:var(--buy-bg);color:var(--buy)}.slot-chip.sell{background:var(--sell-bg);color:var(--sell)}.trade-cell{cursor:default;color:var(--text-muted)}.trade-cell-content{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 7px;border-radius:7px}.trade-time{font-size:11px;color:var(--text-secondary);font-variant-numeric:tabular-nums;display:inline-flex;align-items:center;gap:4px}.slot-dot{width:6px;height:6px;border-radius:50%;flex:none}.slot-dot.buy{background:var(--buy);box-shadow:0 0 0 3px var(--buy-bg)}.slot-dot.sell{background:var(--sell);box-shadow:0 0 0 3px var(--sell-bg)}.trade-price{font-size:13px;color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.trade-cell.buy .trade-price{color:var(--buy)}.trade-cell.sell .trade-price{color:var(--sell)}.trade-empty{color:var(--text-muted);opacity:.35;font-size:14px}.days-cell{display:flex;flex-direction:column;align-items:center;gap:4px}.days-pill{display:inline-block;padding:3px 9px;border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);color:var(--text-secondary);font-size:12px;font-variant-numeric:tabular-nums}.days-track{display:block;width:52px;height:3px;border-radius:3px;background:var(--border);overflow:hidden}.days-fill{display:block;height:100%;border-radius:3px;background:var(--primary-grad)}.return-cell{display:flex;flex-direction:column;align-items:center;gap:3px}.mini-trend{display:block}.trend-base{stroke:var(--border);stroke-width:1}.return-pill{display:inline-flex;align-items:center;gap:3px;padding:3px 10px;border-radius:6px;font-variant-numeric:tabular-nums;font-weight:750;font-size:13.5px;min-width:82px;justify-content:center}.return-pill .pill-arrow{font-size:9px}.col-return.up .return-pill{background:var(--up-bg);color:var(--up)}.col-return.down .return-pill{background:var(--down-bg);color:var(--down)}.col-return.flat .return-pill{background:var(--surface);color:var(--text-secondary);border:1px solid var(--border)}.empty-state{padding:58px 16px;text-align:center;color:var(--text-muted);font-size:13px}.empty-state:before{content:"◦";display:block;font-size:30px;margin-bottom:10px;color:var(--text-muted);opacity:.5}.pagination{display:flex;align-items:center;gap:6px;margin-top:16px;flex-wrap:wrap}.pagination.muted{color:var(--text-muted);font-size:13px}.page-btn{min-width:34px;height:32px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--text-secondary);font-size:13px;transition:border-color .14s ease,color .14s ease,background .14s ease}.page-btn:hover:not(:disabled){border-color:var(--border-strong);color:var(--text);background:var(--surface)}.page-btn.active{background:var(--primary-grad);border-color:transparent;color:#fff;font-weight:600;box-shadow:0 3px 8px var(--primary-ring)}.page-btn:disabled{opacity:.45;cursor:not-allowed}.page-info{margin-left:10px;font-size:13px;color:var(--text-muted)}.record-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;padding:12px 18px;background:var(--card-soft);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-wrap:wrap}.footer-count{font-size:13px;color:var(--text-secondary)}.footer-actions{display:flex;gap:10px}.error-banner{background:var(--up-bg);border:1px solid color-mix(in srgb,var(--up) 30%,transparent);color:var(--up);padding:11px 14px;border-radius:var(--radius-sm);margin-bottom:16px;font-size:13px}.up{color:var(--up)}.down{color:var(--down)}.return-loading{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;color:var(--text-muted);font-size:16px;line-height:1;animation:return-pulse 1.2s ease-in-out infinite}@keyframes return-pulse{0%,to{opacity:.35}50%{opacity:.9}}.row-toggle{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-right:4px;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--text-muted);cursor:pointer;transition:color .18s,transform .18s,border-color .18s,background .18s;vertical-align:middle}.row-toggle:hover{color:var(--primary);border-color:var(--primary);background:var(--primary-soft)}.row-toggle.open{color:var(--primary);border-color:var(--primary);background:var(--primary-soft);transform:rotate(90deg)}.row-toggle svg{display:block}.chip-source{color:var(--text-muted);font-size:12px}.stock-detail-row td{padding:0 12px 10px}.chip-detail{border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:12px 14px;box-shadow:var(--shadow-sm)}.chip-detail-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.chip-detail-title{font-weight:600;color:var(--text)}.chip-detail-date{font-size:12px;color:var(--text-muted)}.chip-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 16px}.chip-metric{display:flex;flex-direction:column;gap:3px}.chip-metric-label{font-size:11px;color:var(--text-muted);letter-spacing:.3px}.chip-metric-value{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:13px;color:var(--text)}.chip-metric-value strong{font-weight:700;font-size:14px}.main-label{font-style:normal;font-size:11px;padding:1px 6px;border-radius:5px;background:var(--warn-bg);color:var(--warn)}.change.up{color:var(--up)}.change.down{color:var(--down)}.dim{color:var(--text-muted);font-weight:400}.chip-detail-row{display:flex;gap:12px;margin-top:12px;align-items:flex-start}.chip-detail-row-label{flex:none;font-size:11px;color:var(--text-muted);padding-top:4px;min-width:60px}.concept-chips{display:flex;flex-wrap:wrap;gap:5px}.concept-chip{font-size:11px;padding:2px 9px;border-radius:20px;background:var(--primary-soft);color:var(--primary);white-space:nowrap}.fin-row{display:flex;gap:18px;flex-wrap:wrap}.fin-row span{display:flex;gap:5px;align-items:baseline}.fin-row em{font-style:normal;font-size:11px;color:var(--text-muted)}@media (max-width: 720px){.topnav-inner{padding:0 12px;gap:8px}.topnav-brand span{display:none}.topnav-links{margin-left:8px;gap:2px}.topnav-link{padding:5px 10px;font-size:12.5px}.cmd-trigger-btn span{display:none}.cmd-trigger-btn{padding:5px 8px}.market-status{display:none}.theme-toggle{width:32px;height:32px;flex:none}.page{padding:18px 12px 42px}.page-header{flex-direction:column;align-items:stretch}.control-panel{align-items:stretch}.control-body{width:100%}.stat-grid{grid-template-columns:repeat(2,1fr);gap:10px}.col-trade{min-width:72px}.drawer-panel{max-width:100%}.cal-popover{left:auto;right:0}.stock-signal-module .stock-grid,.stock-signal-module .overview-grid{grid-template-columns:1fr}}
