* { margin: 0; padding: 0; box-sizing: border-box; }
        body {
            font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif;
            background: #0d1117;
            color: #c9d1d9;
            min-height: 100vh;
        }
        .container { max-width: 1440px; margin: 0 auto; padding: 16px; }

        /* 顶部导航 */
        .top-header {
            background: #161b22;
            border: 1px solid #30363d;
            border-radius: 10px;
            margin-bottom: 16px;
            overflow: hidden;
        }
        .header-top {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 16px 24px;
            background: linear-gradient(135deg, #0d1117 0%, #161b22 100%);
            border-bottom: 1px solid #30363d;
        }
        .header-top h1 {
            font-size: 20px;
            color: #f0f6fc;
            display: flex;
            align-items: center;
            gap: 6px;
            letter-spacing: 0.5px;
        }
        .header-top h1 img {
            flex-shrink: 0;
        }
        .update-time {
            font-size: 12px;
            color: #8b949e;
        }

        /* 标签页导航 */
        .nav-tabs {
            display: flex;
            gap: 0;
            padding: 0 24px;
            border-bottom: 1px solid #30363d;
            background: #161b22;
            overflow-x: auto;
            overflow-y: hidden;
            -webkit-overflow-scrolling: touch;
            scrollbar-width: none;
            -ms-overflow-style: none;
        }
        .nav-tabs::-webkit-scrollbar { display: none; }
        .nav-tab {
            padding: 12px 24px;
            font-size: 15px;
            color: #8b949e;
            text-decoration: none;
            border-bottom: 3px solid transparent;
            transition: all 0.2s;
            display: flex;
            align-items: center;
            gap: 8px;
            flex-shrink: 0;
            white-space: nowrap;
        }
        .nav-tab:hover {
            color: #c9d1d9;
            background: rgba(88,166,255,0.05);
        }
        .nav-tab.active {
            color: #58a6ff;
            border-bottom-color: #58a6ff;
            font-weight: 600;
        }
        .nav-tab .tab-icon {
            font-size: 16px;
        }

        /* 子标签页 */
        .sub-tabs {
            display: flex;
            gap: 2px;
            margin-bottom: 16px;
            padding: 8px 0;
            border-bottom: 1px solid #21262d;
        }
        .sub-tab {
            padding: 6px 16px;
            background: #161b22;
            border: 1px solid #30363d;
            border-radius: 6px;
            color: #8b949e;
            cursor: pointer;
            font-size: 14px;
            text-decoration: none;
            transition: all 0.15s;
        }
        .sub-tab:hover {
            background: #21262d;
            color: #c9d1d9;
        }
        .sub-tab.active {
            background: #1f4494;
            color: #79c0ff;
            border-color: #388bfd;
        }
        .sub-content { display: none; }
        .sub-content.active { display: block; }


        /* 时间选择器 */
        .time-selector {
            padding: 14px 24px;
            background: #0d1117;
            border-bottom: 1px solid #21262d;
        }
        .time-controls {
            display: flex;
            gap: 12px;
            align-items: flex-end;
            flex-wrap: wrap;
        }
        .time-group {
            display: flex;
            flex-direction: column;
            gap: 4px;
        }
        .time-group label {
            font-size: 12px;
            color: #8b949e;
        }
        .time-group input, .time-group select {
            padding: 6px 10px;
            border: 1px solid #30363d;
            border-radius: 6px;
            background: #161b22;
            color: #c9d1d9;
            font-size: 13px;
            outline: none;
        }
        .time-group input:focus, .time-group select:focus {
            border-color: #58a6ff;
        }
        .btn-apply {
            background: #238636;
            color: white;
            border: none;
            padding: 7px 16px;
            border-radius: 6px;
            font-size: 13px;
            cursor: pointer;
            font-weight: 500;
            transition: background 0.2s;
        }
        .btn-apply:hover { background: #2ea043; }
        .btn-reset {
            background: transparent;
            color: #8b949e;
            border: 1px solid #30363d;
            padding: 7px 16px;
            border-radius: 6px;
            font-size: 13px;
            cursor: pointer;
            text-decoration: none;
            transition: all 0.2s;
        }
        .btn-reset:hover {
            color: #c9d1d9;
            border-color: #8b949e;
        }
        .presets {
            display: flex;
            gap: 8px;
            margin-top: 8px;
        }
        .presets a {
            color: #58a6ff;
            text-decoration: none;
            font-size: 12px;
            padding: 3px 8px;
            border-radius: 12px;
            background: rgba(88,166,255,0.1);
            transition: background 0.2s;
        }
        .presets a:hover { background: rgba(88,166,255,0.2); }

        /* 日期选择器 */
        .date-selector-bar {
            padding: 10px 24px;
            background: #0d1117;
            border-bottom: 1px solid #21262d;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        .date-selector-label {
            font-size: 13px;
            color: #8b949e;
            white-space: nowrap;
        }
        .date-select {
            padding: 6px 10px;
            border: 1px solid #30363d;
            border-radius: 6px;
            background: #161b22;
            color: #c9d1d9;
            font-size: 13px;
            outline: none;
            cursor: pointer;
        }
        .date-select:focus {
            border-color: #58a6ff;
        }

        /* 趋势主线横幅 */
        .mainline-banner {
            margin-bottom: 16px;
            border-radius: 10px;
            border: 1px solid #30363d;
            overflow: hidden;
        }
        .mainline-banner.active {
            background: linear-gradient(135deg, #0d3320 0%, #161b22 100%);
            border-color: #3fb950;
        }
        .mainline-banner.ended {
            background: linear-gradient(135deg, #331a0d 0%, #161b22 100%);
            border-color: #d29922;
        }
        .mainline-badge {
            padding: 8px 20px;
            font-size: 14px;
            font-weight: 700;
            letter-spacing: 1px;
        }
        .mainline-banner.active .mainline-badge {
            color: #3fb950;
            background: rgba(63,185,80,0.08);
            border-bottom: 1px solid rgba(63,185,80,0.2);
        }
        .mainline-banner.ended .mainline-badge {
            color: #d29922;
            background: rgba(210,153,34,0.08);
            border-bottom: 1px solid rgba(210,153,34,0.2);
        }
        .mainline-info {
            padding: 12px 20px;
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 10px;
        }
        .mainline-name {
            font-size: 22px;
            font-weight: 700;
            color: #f0f6fc;
            letter-spacing: 2px;
        }
        .mainline-meta {
            font-size: 13px;
            color: #8b949e;
            line-height: 1.6;
        }
        .mainline-meta strong {
            font-weight: 600;
        }
        /* 预警板块 */
        .mainline-alerts {
            border-top: 1px solid rgba(210,153,34,0.2);
            padding: 12px 20px;
        }
        .alert-label {
            font-size: 12px;
            color: #d29922;
            font-weight: 600;
            margin-bottom: 8px;
            letter-spacing: 1px;
        }
        .alert-list {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
        }
        .alert-item {
            background: rgba(210,153,34,0.06);
            border: 1px solid rgba(210,153,34,0.15);
            border-radius: 6px;
            padding: 8px 14px;
            display: flex;
            align-items: center;
            gap: 10px;
            transition: all 0.2s;
        }
        .alert-item:hover {
            background: rgba(210,153,34,0.12);
        }

        /* ========== 预警卡片面板（单容器，紧凑设计） ========== */
        .mainline-alerts-card {
            background: linear-gradient(135deg, #1a1a0a 0%, #161b22 100%);
            border: 1px solid rgba(210,153,34,0.2);
            border-radius: 10px;
            padding: 14px 18px;
            margin-bottom: 16px;
        }
        .alerts-card-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding-bottom: 10px;
            margin-bottom: 10px;
            border-bottom: 1px solid rgba(210,153,34,0.12);
        }
        .alerts-card-title {
            font-size: 14px;
            font-weight: 700;
            color: #d29922;
            letter-spacing: 1px;
        }
        .alerts-card-vacancy {
            font-size: 11px;
            color: #6e7681;
            flex-shrink: 0;
        }
        .alerts-card-vacancy strong {
            color: #58a6ff;
            font-weight: 600;
        }
        .alerts-card-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
            gap: 8px;
        }
        .alert-card {
            background: rgba(210,153,34,0.04);
            border: 1px solid rgba(210,153,34,0.1);
            border-radius: 8px;
            padding: 10px 14px;
            cursor: pointer;
            transition: all 0.2s;
        }
        .alert-card:hover {
            background: rgba(210,153,34,0.08);
            border-color: rgba(210,153,34,0.3);
            transform: translateY(-1px);
        }
        .alert-card-name {
            font-size: 15px;
            font-weight: 700;
            color: #f0f6fc;
            letter-spacing: 1px;
            margin-bottom: 6px;
        }
        .alert-card-stats {
            display: flex;
            gap: 8px;
            flex-wrap: wrap;
        }
        .alert-card-stats .stat-item {
            font-size: 11px;
            color: #8b949e;
            background: rgba(240,246,252,0.04);
            padding: 2px 7px;
            border-radius: 4px;
            white-space: nowrap;
        }
        .alert-card-stats .stat-item.up {
            color: #f85149;
            background: rgba(248,81,73,0.08);
        }
        .alert-card-stats .stat-item.down {
            color: #3fb950;
            background: rgba(63,185,80,0.08);
        }
        .alerts-card-empty {
            text-align: center;
            color: #484f58;
            font-size: 13px;
            padding: 12px 0;
        }
        /* ========== 短线情绪主线 Banner ========== */
        .smline-banner {
            margin-bottom: 16px;
            border-radius: 10px;
            border: 1px solid #30363d;
            overflow: hidden;
        }
        .smline-banner.active {
            background: linear-gradient(135deg, #1a1040 0%, #161b22 100%);
            border-color: #7928ca;
        }
        .smline-banner.ended {
            background: linear-gradient(135deg, #1a1433 0%, #161b22 100%);
            border-color: #6e7681;
        }
        .smline-badge {
            padding: 8px 20px;
            font-size: 14px;
            font-weight: 700;
            letter-spacing: 1px;
        }
        .smline-banner.active .smline-badge {
            color: #bc8cff;
            background: rgba(188,140,255,0.08);
            border-bottom: 1px solid rgba(188,140,255,0.2);
        }
        .smline-banner.ended .smline-badge {
            color: #8b949e;
            background: rgba(139,148,158,0.08);
            border-bottom: 1px solid rgba(139,148,158,0.2);
        }
        .smline-info {
            padding: 12px 20px;
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 10px;
        }
        .smline-name {
            font-size: 22px;
            font-weight: 700;
            color: #f0f6fc;
            letter-spacing: 2px;
        }
        .smline-meta {
            font-size: 13px;
            color: #8b949e;
            line-height: 1.6;
        }
        .smline-meta strong {
            font-weight: 600;
        }
        .smline-tag {
            display: inline-block;
            padding: 2px 8px;
            border-radius: 4px;
            font-size: 12px;
            font-weight: 600;
        }
        .smline-tag.purple { background: rgba(188,140,255,0.15); color: #bc8cff; }
        .smline-tag.green { background: rgba(63,185,80,0.15); color: #3fb950; }
        .smline-tag.red { background: rgba(248,81,73,0.15); color: #f85149; }
        /* 短线支线 */
        .smline-branches {
            border-top: 1px solid rgba(188,140,255,0.15);
            padding: 12px 20px;
        }
        .smline-branch-label {
            font-size: 12px;
            color: #bc8cff;
            font-weight: 600;
            margin-bottom: 8px;
            letter-spacing: 1px;
        }
        .smline-branch-list {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
        }
        .smline-branch-item {
            background: rgba(188,140,255,0.06);
            border: 1px solid rgba(188,140,255,0.12);
            border-radius: 6px;
            padding: 6px 12px;
            font-size: 13px;
            color: #c9d1d9;
        }
        .smline-branch-item-name {
            font-weight: 600;
            color: #bc8cff;
        }
        .smline-branch-item-meta {
            font-size: 11px;
            color: #8b949e;
            margin-left: 6px;
        }
        @media (max-width: 768px) {
            .smline-info { flex-direction: column; align-items: flex-start; }
        }
            border-color: rgba(210,153,34,0.35);
        }
        .alert-rank {
            font-size: 11px;
            font-weight: 700;
            color: #d29922;
            background: rgba(210,153,34,0.15);
            padding: 2px 6px;
            border-radius: 4px;
            flex-shrink: 0;
        }
        .alert-name {
            font-size: 15px;
            font-weight: 600;
            color: #58a6ff;
            white-space: nowrap;
            cursor: pointer;
            text-decoration: none;
            transition: color 0.2s;
        }
        .alert-name:hover {
            color: #79c0ff;
            text-decoration: underline;
        }
        .alert-detail {
            font-size: 12px;
            color: #8b949e;
        }
        .alert-detail strong {
            font-weight: 600;
        }

        /* 数据卡片 */
        .data-cards {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 12px;
            margin-bottom: 16px;
        }
        .data-card {
            background: #161b22;
            border: 1px solid #30363d;
            border-radius: 8px;
            padding: 16px;
            min-height: 110px;
            display: flex;
            flex-direction: column;
            transition: all 0.2s;
        }
        .data-card:hover {
            border-color: #58a6ff;
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0,0,0,0.3);
        }
        .data-card .card-hint { margin-top: auto; }
        .card-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 10px;
            padding-bottom: 8px;
            border-bottom: 1px solid #21262d;
        }
        .card-title {
            font-size: 13px;
            color: #8b949e;
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .card-date {
            font-size: 11px;
            color: #6e7681;
        }
        .card-value {
            font-size: 26px;
            font-weight: 700;
            color: #f0f6fc;
            text-align: center;
            margin: 8px 0;
        }
        .card-subtitle {
            font-size: 13px;
            color: #e6edf3;
            text-align: center;
            margin-bottom: 2px;
        }
        .card-hint {
            font-size: 11px;
            color: #484f58;
            text-align: center;
        }
        .card-tag {
            display: inline-block;
            padding: 2px 8px;
            border-radius: 10px;
            font-size: 11px;
            font-weight: 500;
            margin-top: 4px;
        }

        /* 图表区域 */
        .chart-section {
            background: #161b22;
            border: 1px solid #30363d;
            border-radius: 8px;
            margin-bottom: 16px;
            overflow: hidden;
        }
        .chart-section-title {
            padding: 14px 20px;
            font-size: 15px;
            font-weight: 600;
            color: #f0f6fc;
            border-bottom: 1px solid #21262d;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
        }
        .period-selector {
            display: flex;
            align-items: center;
            gap: 4px;
        }
        .period-label {
            font-size: 12px;
            color: #8b949e;
            font-weight: 400;
            margin-right: 4px;
        }
        .period-btn {
            display: inline-block;
            padding: 3px 10px;
            font-size: 12px;
            color: #8b949e;
            background: #21262d;
            border: 1px solid #30363d;
            border-radius: 4px;
            text-decoration: none;
            transition: all 0.15s;
        }
        .period-btn:hover {
            color: #c9d1d9;
            border-color: #58a6ff;
        }
        .period-btn.active {
            color: #f0f6fc;
            background: #1f6feb;
            border-color: #1f6feb;
        }
        .chart-full {
            padding: 8px;
        }

        /* 概念板块卡片 */
        .concept-section {
            padding: 12px 20px;
            border-bottom: 1px solid #21262d;
        }
        .concept-section:last-child { border-bottom: none; }
        .concept-label {
            font-size: 14px;
            font-weight: 600;
            margin-bottom: 10px;
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .concept-cards {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
        }
        .concept-card {
            background: #21262d;
            border: 1px solid #30363d;
            border-radius: 8px;
            padding: 10px 16px;
            min-width: 140px;
            flex: 1;
            max-width: 180px;
            transition: all 0.2s;
            text-align: center;
        }
        .concept-card:hover {
            border-color: #58a6ff;
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(88,166,255,0.15);
        }
        .concept-name {
            font-size: 14px;
            font-weight: 500;
            color: #c9d1d9;
            margin-bottom: 4px;
        }
        .concept-pct {
            font-size: 16px;
            font-weight: 700;
        }

        /* 概念弹窗表格 */
        .concept-stock-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 12px;
            table-layout: fixed;
        }
        .concept-stock-table th {
            background: #0d1117;
            padding: 10px 14px;
            text-align: right;
            font-weight: 600;
            color: #8b949e;
            border-bottom: 1px solid #21262d;
            position: sticky;
            top: 0;
            z-index: 1;
        }
        .sort-header {
            cursor: pointer;
            transition: color 0.15s;
        }
        .sort-header:hover {
            color: #58a6ff !important;
        }
        .concept-stock-table th:first-child {
            text-align: left;
            width: 26%;
        }
        .concept-stock-table th:nth-child(2) {
            width: 12%;
        }
        .concept-stock-table th:nth-child(3),
        .concept-stock-table th:nth-child(4),
        .concept-stock-table th:nth-child(5) {
            width: 18%;
        }
        .concept-stock-table td {
            padding: 8px 14px;
            border-bottom: 1px solid #21262d;
            text-align: right;
            color: #c9d1d9;
        }
        .concept-stock-table td:first-child {
            text-align: left;
        }
        .concept-stock-table td:nth-child(2) {
            color: #8b949e;
            font-size: 12px;
            white-space: nowrap;
            overflow: visible;
        }
        .concept-stock-table tr:hover td {
            background: rgba(88,166,255,0.05);
        }
        .concept-info-bar {
            padding: 8px 20px;
            border-bottom: 1px solid #21262d;
            display: flex;
            align-items: center;
            gap: 16px;
            background: #0d1117;
            font-size: 14px;
        }
        .concept-info-bar .concept-title {
            font-size: 16px;
            font-weight: 600;
            color: #f0f6fc;
        }
        .concept-info-bar .concept-date {
            color: #8b949e;
            font-size: 13px;
        }
        .concept-info-bar .stock-count {
            margin-left: auto;
            color: #8b949e;
            font-size: 13px;
        }

        /* 数据表格 */
        .table-container {
            background: #161b22;
            border: 1px solid #30363d;
            border-radius: 8px;
            margin-bottom: 16px;
            overflow-x: auto;
        }
        .table-title {
            padding: 14px 20px;
            font-size: 15px;
            font-weight: 600;
            color: #f0f6fc;
            border-bottom: 1px solid #21262d;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        table {
            width: 100%;
            border-collapse: collapse;
            font-size: 13px;
        }
        th {
            background: #0d1117;
            padding: 10px 12px;
            text-align: left;
            font-weight: 600;
            color: #8b949e;
            border-bottom: 2px solid #21262d;
            position: sticky;
            top: 0;
            white-space: nowrap;
        }
        td {
            padding: 8px 12px;
            border-bottom: 1px solid #21262d;
            color: #c9d1d9;
            white-space: nowrap;
        }
        tr:hover td { background: rgba(88,166,255,0.03); }
        .positive { color: #f85149; font-weight: 600; }
        .negative { color: #3fb950; font-weight: 600; }

        /* 可点击卡片 */
        .clickable-card {
            cursor: pointer;
        }
        .clickable-card:hover {
            border-color: #58a6ff;
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(88,166,255,0.15);
        }
        .clickable-card::after {
            content: ' 🔍';
            font-size: 14px;
        }
        .clickable-card:hover .card-value {
            color: #58a6ff !important;
        }

        /* 股票名称可点击 */
        .stock-link {
            color: #58a6ff;
            cursor: pointer;
            text-decoration: none;
            font-weight: 500;
            transition: color 0.15s;
        }
        .stock-link:hover {
            color: #79c0ff;
            text-decoration: underline;
        }

        /* 连板个股表格可点击行 */
        tr.lb-clickable {
            cursor: pointer;
            transition: background 0.15s;
        }
        tr.lb-clickable:hover {
            background: rgba(88,166,255,0.06) !important;
        }
        tr.lb-clickable:hover td:first-child div:first-child {
            color: #58a6ff !important;
        }

        /* K线弹窗 */
        .kline-modal {
            max-width: 1100px;
            max-height: 92vh;
            width: 95vw;
        }
        .concept-modal {
            max-width: 950px;
            max-height: 90vh;
        }
        .dual-modal {
            max-width: 98vw;
            width: 1100px;
            max-height: 95vh;
        }
        #conceptDualBody {
            overflow-y: auto !important;
            overflow-x: hidden !important;
            max-height: calc(95vh - 64px) !important;
            padding: 0 !important;
        }
        .dual-header {
            padding: 8px 20px;
            border-bottom: 1px solid #21262d;
            display: flex;
            align-items: center;
            justify-content: space-between;
            background: #0d1117;
        }
        .dual-title {
            font-size: 14px;
            font-weight: 600;
            color: #f0f6fc;
        }
        .dual-subtitle {
            font-size: 12px;
            color: #8b949e;
        }
        .kline-info {
            padding: 8px 20px;
            border-bottom: 1px solid #21262d;
            display: flex;
            gap: 20px;
            font-size: 13px;
            color: #8b949e;
            background: #0d1117;
        }
        .kline-info .price {
            font-size: 18px;
            font-weight: 600;
            color: #f0f6fc;
        }
        .kline-info .pct-up { color: #f85149; }
        .kline-info .pct-down { color: #3fb950; }

        /* 同花顺风格 K线信息栏 */
        .kline-info-ths {
            padding: 10px 24px;
            border-bottom: 1px solid #21262d;
            background: #0d1117;
        }
        .kline-info-ths .ths-price-row {
            display: flex;
            align-items: baseline;
            gap: 12px;
            margin-bottom: 6px;
        }
        .kline-info-ths .ths-price {
            font-size: 22px;
            font-weight: 700;
            color: #f0f6fc;
            font-variant-numeric: tabular-nums;
        }
        .kline-info-ths .ths-pct {
            font-size: 16px;
            font-weight: 600;
        }
        .kline-info-ths .ths-label {
            font-size: 12px;
            color: #8b949e;
            margin-left: auto;
        }
        .kline-info-ths .ths-ma-row {
            display: flex;
            gap: 16px;
            flex-wrap: wrap;
        }
        .kline-info-ths .ths-ma {
            font-size: 11px;
            opacity: 0.85;
        }
        .kline-info-ths .ths-ma b {
            font-weight: 600;
            margin-left: 2px;
        }
        .kline-info-ths .ths-sep {
            color: #30363d;
            font-size: 11px;
            margin: 0 2px;
        }
        #klineChart { position: relative; }
        .ohlc-float {
            position: absolute;
            left: 8px;
            top: 8px;
            z-index: 10;
            background: rgba(22, 27, 34, 0.92);
            border: 1px solid #30363d;
            border-radius: 4px;
            padding: 6px 10px;
            font-size: 12px;
            line-height: 1.7;
            pointer-events: none;
            user-select: none;
        }
        .ohlc-float .ohlc-row { display: flex; align-items: center; gap: 6px; }
        .ohlc-float .ohlc-row span {
            color: #8b949e;
            width: 14px;
            font-size: 11px;
        }
        .ohlc-float .ohlc-row b {
            font-variant-numeric: tabular-nums;
            color: #c9d1d9;
        }
        .ohlc-float .ohlc-row b.ohlc-high { color: #f85149; }
        .ohlc-float .ohlc-row b.ohlc-low { color: #3fb950; }

        /* 热力图颜色图例 */
        .hm-swatch { display:inline-block; width:14px; height:10px; border-radius:2px; flex-shrink:0; }

        /* 热力图网格 */
        .hm-grid { display:flex; flex-direction:column; gap:1px; overflow-x:auto; padding-bottom:2px; }
        .hm-row { display:flex; gap:1px; }
        .hm-label {
            width:80px; min-width:80px; flex-shrink:0;
            font-size:11px; color:#8b949e; padding:2px 6px;
            overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
            line-height:22px;
        }
        .hm-header .hm-label { color:#484f58; font-size:10px; }
        .hm-cell {
            width:32px; height:22px; flex-shrink:0;
            border-radius:2px; cursor:pointer; transition: transform 0.1s;
        }
        .hm-cell:hover { transform: scale(1.4); z-index:5; box-shadow: 0 0 5px rgba(255,255,255,0.35); }
        .hm-cell.hm-date {
            background:transparent; color:#f0f6fc; font-size:12px;
            text-align:center; line-height:22px; cursor:pointer; width:32px;
            font-weight:600;
        }

        /* 弹窗 */
        .modal-overlay {
            display: none;
            position: fixed;
            top: 0; left: 0; right: 0; bottom: 0;
            background: rgba(0,0,0,0.7);
            z-index: 1000;
            justify-content: center;
            align-items: center;
            animation: fadeIn 0.2s;
        }
        #klineOverlay { z-index: 1100; }
        #conceptOverlay { z-index: 1050; }
        .modal-overlay.active {
            display: flex;
        }
        .modal-box {
            background: #161b22;
            border: 1px solid #30363d;
            border-radius: 12px;
            width: 90%;
            max-width: 800px;
            max-height: 80vh;
            overflow: hidden;
            animation: slideUp 0.25s ease-out;
            box-shadow: 0 20px 60px rgba(0,0,0,0.5);
        }
        .modal-header {
            padding: 16px 20px;
            border-bottom: 1px solid #30363d;
            display: flex;
            justify-content: space-between;
            align-items: center;
            background: #0d1117;
        }
        .modal-title {
            font-size: 16px;
            font-weight: 600;
            color: #f0f6fc;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .modal-close {
            background: #21262d;
            border: none;
            color: #8b949e;
            font-size: 20px;
            cursor: pointer;
            width: 32px;
            height: 32px;
            border-radius: 6px;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all 0.2s;
        }
        .modal-close:hover {
            background: #30363d;
            color: #f0f6fc;
        }
        .modal-body {
            padding: 0;
            overflow-y: auto;
            max-height: calc(80vh - 64px);
        }
        /* 全屏明细按钮 */
        .detail-btn {
            display: inline-block;
            padding: 10px 24px;
            background: linear-gradient(135deg, #1a2332, #1f2d3d);
            border: 1px solid #30363d;
            border-radius: 8px;
            color: #58a6ff;
            font-size: 14px;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.2s;
        }
        .detail-btn:hover {
            background: linear-gradient(135deg, #1f2d3d, #253545);
            border-color: #58a6ff;
            color: #79c0ff;
            box-shadow: 0 0 12px rgba(88,166,255,0.2);
        }
        .modal-body table {
            width: 100%;
            border-collapse: collapse;
            font-size: 13px;
        }
        .modal-body th {
            background: #0d1117;
            padding: 10px 14px;
            text-align: left;
            font-weight: 600;
            color: #8b949e;
            border-bottom: 1px solid #21262d;
            position: sticky;
            top: 0;
            z-index: 1;
        }
        .modal-body td {
            padding: 8px 14px;
            border-bottom: 1px solid #21262d;
            color: #c9d1d9;
        }
        .modal-body tr:hover td {
            background: rgba(88,166,255,0.05);
        }
        .modal-loading {
            padding: 40px;
            text-align: center;
            color: #8b949e;
            font-size: 14px;
        }
        .modal-empty {
            padding: 40px;
            text-align: center;
            color: #484f58;
            font-size: 14px;
        }

        /* 全量个股弹窗 */
        #stockFullOverlay { z-index: 1080; }
        #stockFullOverlay .modal-box {
            max-width: 98vw;
            width: 1200px;
            max-height: 96vh;
        }
        #stockFullBody {
            overflow-y: auto !important;
            overflow-x: hidden !important;
            max-height: calc(96vh - 64px) !important;
            padding: 0 !important;
        }
        .stock-full-header {
            padding: 12px 20px;
            display: flex;
            align-items: center;
            gap: 16px;
            background: #0d1117;
            border-bottom: 1px solid #30363d;
        }
        .stock-full-title {
            font-size: 16px;
            font-weight: 700;
            color: #f0f6fc;
        }
        .stock-full-meta {
            font-size: 13px;
            color: #8b949e;
        }
        .stock-full-back {
            padding: 6px 16px;
            background: #21262d;
            border: 1px solid #30363d;
            border-radius: 6px;
            color: #58a6ff;
            font-size: 13px;
            cursor: pointer;
            margin-right: auto;
            transition: all 0.2s;
        }
        .stock-full-back:hover {
            background: #30363d;
            color: #79c0ff;
        }
        .stock-full-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 14px;
        }
        .stock-full-table th {
            background: #0d1117;
            padding: 12px 16px;
            text-align: left;
            font-weight: 600;
            color: #8b949e;
            border-bottom: 1px solid #21262d;
            border-top: 1px solid #21262d;
            position: sticky;
            top: 0;
            z-index: 2;
            font-size: 14px;
        }
        .stock-full-table td {
            padding: 10px 16px;
            border-bottom: 1px solid #21262d;
            color: #c9d1d9;
            font-size: 14px;
        }
        .stock-full-table tr:hover td {
            background: rgba(88,166,255,0.06);
        }
        .stock-full-btn {
            display: block;
            width: 100%;
            padding: 16px;
            background: linear-gradient(135deg, #1a2332, #1f2d3d);
            border: 2px solid #30363d;
            border-radius: 8px;
            color: #58a6ff;
            font-size: 15px;
            font-weight: 700;
            cursor: pointer;
            text-align: center;
            transition: all 0.2s;
            margin-top: 16px;
        }
        .stock-full-btn:hover {
            background: linear-gradient(135deg, #1f2d3d, #253545);
            border-color: #58a6ff;
            color: #79c0ff;
            box-shadow: 0 0 16px rgba(88,166,255,0.25);
        }
        .stock-full-btn .count {
            font-size: 13px;
            color: #8b949e;
            font-weight: 400;
            display: block;
            margin-top: 4px;
        }

        /* 连板梯队样式 */
        .ladder-group {
            padding: 12px 20px;
            border-bottom: 1px solid #21262d;
        }
        .ladder-group:last-child { border-bottom: none; }
        .ladder-label {
            font-size: 14px;
            font-weight: 600;
            color: #f0f6fc;
            margin-bottom: 6px;
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .ladder-label .badge {
            background: #238636;
            color: #fff;
            padding: 2px 10px;
            border-radius: 10px;
            font-size: 12px;
        }
        .ladder-label .badge.board-2 { background: #1f6feb; }
        .ladder-label .badge.board-3 { background: #8957e5; }
        .ladder-label .badge.board-4 { background: #d29922; }
        .ladder-label .badge.board-5 { background: #f85149; }
        .ladder-stocks {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
        }
        .ladder-stock {
            background: #21262d;
            color: #c9d1d9;
            padding: 4px 12px;
            border-radius: 6px;
            font-size: 13px;
            border: 1px solid #30363d;
        }

        @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
        @keyframes slideUp { from { transform: translateY(30px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }

        /* 明细表日期范围按钮 */
        .range-selector { display: flex; gap: 4px; }
        .range-btn {
            padding: 5px 12px;
            border-radius: 14px;
            font-size: 12px;
            font-weight: 500;
            text-decoration: none;
            color: #8b949e;
            background: #21262d;
            border: 1px solid #30363d;
            transition: all 0.2s;
        }
        .range-btn:hover { color: #c9d1d9; border-color: #58a6ff; }
        .range-btn.active {
            color: #fff;
            background: #1f6feb;
            border-color: #1f6feb;
        }

        /* 明细表 */
        .detail-table-wrap {
            overflow-x: auto;
            border: 1px solid #30363d;
            border-radius: 8px;
            background: #161b22;
        }
        .detail-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 12px;
            min-width: 1100px;
        }
        .detail-table thead {
            position: sticky;
            top: 0;
            z-index: 1;
        }
        .detail-table th {
            background: #21262d;
            padding: 10px 8px;
            text-align: left;
            font-weight: 600;
            color: #8b949e;
            border-bottom: 2px solid #30363d;
            white-space: nowrap;
            font-size: 12px;
        }
        .detail-table td {
            padding: 8px 8px;
            border-bottom: 1px solid #21262d;
            color: #c9d1d9;
            white-space: nowrap;
        }
        .detail-table tr:hover {
            background: #1c2333;
        }
        .detail-table .date-col {
            color: #f0f6fc;
            font-weight: 500;
        }
        .detail-table .up { color: #3fb950; font-weight: 500; }
        .detail-table .down { color: #f85149; font-weight: 500; }

        .timing-badge {
            display: inline-block;
            padding: 2px 8px;
            border-radius: 4px;
            font-size: 11px;
            font-weight: 600;
        }
        .timing-多 { background: rgba(63,185,80,0.15); color: #3fb950; }
        .timing-空 { background: rgba(248,81,73,0.15); color: #f85149; }
        .timing-转 { background: rgba(210,153,34,0.15); color: #d29922; }

        .score-col { font-weight: 600; }
        .score-high { color: #3fb950; }
        .score-mid { color: #d29922; }
        .score-low { color: #f85149; }

        /* 页脚 */
        .footer {
            text-align: center;
            padding: 20px;
            color: #484f58;
            font-size: 12px;
            border-top: 1px solid #21262d;
            margin-top: 8px;
        }

        /* ========== 财经要闻 ========== */
        .news-card {
            background: #161b22;
            border: 1px solid #21262d;
            border-radius: 8px;
            padding: 16px 20px;
            transition: border-color 0.15s;
        }
        .news-card:hover { border-color: #30363d; }
        .news-card.highlight { border-color: #d29922; background: rgba(210,153,34,0.04); }
        .news-card-header {
            display: flex;
            align-items: center;
            gap: 10px;
        }
        .news-rank {
            font-size: 13px;
            font-weight: 700;
            color: #d29922;
            min-width: 24px;
        }
        .news-dot { color: #58a6ff; font-size: 12px; }
        .news-title {
            font-size: 14px;
            font-weight: 600;
            color: #c9d1d9;
            flex: 1;
        }
        .news-source {
            font-size: 11px;
            color: #484f58;
            flex-shrink: 0;
        }
        .news-time {
            font-size: 11px;
            color: #6e7681;
            flex-shrink: 0;
            font-family: 'SF Mono', 'Consolas', monospace;
        }
        .news-impact {
            font-size: 11px;
            padding: 2px 10px;
            border-radius: 12px;
            font-weight: 600;
            flex-shrink: 0;
        }
        .news-impact.positive { background: rgba(63,185,80,0.15); color: #3fb950; }
        .news-impact.negative { background: rgba(248,81,73,0.15); color: #f85149; }
        .news-impact.neutral { background: rgba(139,148,158,0.15); color: #8b949e; }
        .news-summary {
            font-size: 13px;
            color: #8b949e;
            margin: 8px 0 0 34px;
            line-height: 1.6;
        }
        .news-analysis {
            background: rgba(56,139,253,0.05);
            border-left: 3px solid #388bfd;
            padding: 8px 14px;
            margin: 10px 0 0 34px;
            font-size: 13px;
            color: #a5d8ff;
            border-radius: 0 6px 6px 0;
            line-height: 1.7;
        }
        .news-label {
            color: #79c0ff;
            font-weight: 600;
        }

        /* ========== 板块分析标签页（报告式） ========== */
        .sector-container { animation: fadeIn 0.4s; }

        .report-header {
            background: linear-gradient(135deg, #0d1117 0%, #161b22 100%);
            border: 1px solid #30363d;
            border-radius: 10px;
            padding: 20px 24px;
            margin-bottom: 14px;
        }
        .report-header-divider {
            width: 48px; height: 3px; background: linear-gradient(90deg, #58a6ff, #3fb950);
            margin: 0 auto 12px; border-radius: 2px;
        }
        .report-header-title {
            font-size: 22px;
            font-weight: 800;
            color: #f0f6fc;
            margin-bottom: 6px;
            letter-spacing: 1px;
        }
        .report-header-meta {
            font-size: 12px;
            color: #6e7681;
            margin-bottom: 8px;
        }
        .report-header-tagline {
            font-size: 13px;
            color: #58a6ff;
            font-weight: 600;
            padding: 8px 12px;
            background: rgba(88,166,255,0.06);
            border-radius: 6px;
            display: inline-block;
            margin-top: 4px;
        }

        .report-narrative {
            font-size: 13px;
            color: #c9d1d9;
            line-height: 1.75;
            margin-bottom: 6px;
        }
        .report-narrative p { margin: 0 0 8px 0; }
        .report-narrative strong { color: #f0f6fc; }

        .phase-block {
            background: rgba(240,246,252,0.02);
            border-left: 3px solid #30363d;
            border-radius: 4px;
            padding: 10px 14px;
            margin-bottom: 8px;
        }
        .phase-block-title {
            font-size: 13px;
            font-weight: 700;
            color: #f0f6fc;
            margin-bottom: 4px;
        }
        .phase-block-body {
            font-size: 12px;
            color: #8b949e;
            line-height: 1.6;
        }
        .phase-block-body strong { color: #c9d1d9; }

        .phase-risk-red {
            border-left-color: #f85149;
            background: rgba(248,81,73,0.05);
        }
        .phase-risk-yellow {
            border-left-color: #d29922;
            background: rgba(210,153,34,0.05);
        }
        .phase-risk-green {
            border-left-color: #3fb950;
            background: rgba(63,185,80,0.05);
        }

        .proj-summary {
            margin-top: 12px;
            display: flex;
            flex-direction: column;
            gap: 6px;
        }
        .proj-summary-row {
            display: flex;
            gap: 16px;
            padding: 8px 14px;
            background: rgba(240,246,252,0.03);
            border-radius: 6px;
        }
        .proj-summary-row span:first-child {
            font-size: 12px;
            font-weight: 600;
            color: #6e7681;
            min-width: 70px;
        }
        .proj-summary-row span:last-child {
            font-size: 13px;
            font-weight: 700;
        }
        .sector-section {
            background: #161b22;
            border: 1px solid #30363d;
            border-radius: 10px;
            padding: 18px 20px;
            margin-bottom: 14px;
        }
        .sector-section-title {
            font-size: 15px;
            font-weight: 700;
            color: #f0f6fc;
            margin-bottom: 14px;
            padding-bottom: 10px;
            border-bottom: 1px solid #21262d;
            letter-spacing: 1px;
        }
        /* 心理分析阶段标签 */
        .psych-stage {
            display:inline-block;padding:2px 10px;border-radius:10px;
            font-size:13px;font-weight:700;white-space:nowrap;
        }
        .psych-stage.active { background:rgba(76,175,80,0.15);color:#4caf50;border:1px solid rgba(76,175,80,0.3); }
        .psych-stage.waiting { background:rgba(240,192,0,0.12);color:#f0c000;border:1px solid rgba(240,192,0,0.25); }
        .psych-stage.danger { background:rgba(244,67,54,0.15);color:#ff7b72;border:1px solid rgba(244,67,54,0.3); }
        .psych-stage.warn { background:rgba(255,152,0,0.12);color:#ffb74d;border:1px solid rgba(255,152,0,0.25); }
        .psych-card { background:rgba(255,255,255,0.025);border-radius:4px;padding:8px 10px;text-align:center;border:1px solid rgba(255,255,255,0.04); }
        .psych-card .label { font-size:10px;color:#8b949e;margin-bottom:4px; }
        .psych-card .val { font-size:15px;font-weight:bold; }
        .psych-card .val.red { color:#ff7b72; } .psych-card .val.green { color:#4caf50; }
        .psych-card .val.yellow { color:#f0c000; } .psych-card .val.white { color:#c9d1d9; }
        .sector-table-wrap { overflow-x: auto; }
        .sector-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 13px;
        }
        .sector-table thead th {
            background: #0d1117;
            color: #8b949e;
            font-weight: 600;
            font-size: 11px;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            padding: 8px 10px;
            text-align: right;
            border-bottom: 2px solid #30363d;
            white-space: nowrap;
        }
        .sector-table thead th:first-child { text-align: left; }
        .sector-table tbody td {
            padding: 7px 10px;
            border-bottom: 1px solid #21262d;
            text-align: right;
            color: #c9d1d9;
            white-space: nowrap;
        }
        .sector-table tbody td:first-child { text-align: left; }
        .sector-table tbody tr:hover { background: #1c2333; }
        .sector-table .idx-name { font-weight: 600; color: #f0f6fc; }
        .sector-table .idx-bottom { color: #f85149; }
        .sector-table .idx-curr { color: #f0f6fc; font-weight: 600; }
        .sector-table .sector-name {
            font-weight: 600;
            color: #58a6ff;
            cursor: pointer;
        }
        .sector-table .sector-name:hover { color: #79c0ff; text-decoration: underline; }
        .sector-table .total-col { font-size: 14px; }
        .sector-table .amt-col { color: #8b949e; }
        .sector-table .accel-up { color: #3fb950; font-weight: 600; }
        .sector-table .accel-down { color: #f85149; font-weight: 600; }
        .sector-table .neutral { color: #d29922; }
        .sector-table.compact tbody td { padding: 5px 8px; font-size: 12px; }
        .phase-legend {
            display: flex;
            gap: 12px;
            flex-wrap: wrap;
            font-size: 11px;
            color: #6e7681;
            margin-bottom: 12px;
        }
        .phase-legend .sep { color: #30363d; }
        .sector-grid-2col {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 14px;
            margin-bottom: 14px;
        }
        .sector-section.half { margin-bottom: 0; }

        /* 推演卡片 */
        .projection-card {
            padding: 4px 0;
        }
        .proj-signals {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
            margin-bottom: 14px;
        }
        .proj-signal {
            font-size: 12px;
            color: #d29922;
            background: rgba(210,153,34,0.08);
            border: 1px solid rgba(210,153,34,0.2);
            border-radius: 6px;
            padding: 6px 12px;
            white-space: nowrap;
        }
        .proj-body {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }
        .proj-row {
            display: flex;
            align-items: baseline;
            gap: 16px;
            padding: 8px 12px;
            background: rgba(240,246,252,0.02);
            border-radius: 6px;
            border-left: 3px solid #30363d;
        }
        .proj-label {
            font-size: 12px;
            font-weight: 600;
            color: #8b949e;
            min-width: 70px;
            flex-shrink: 0;
        }
        .proj-val {
            font-size: 13px;
            font-weight: 600;
            color: #c9d1d9;
        }

        @media (max-width: 768px) {
            .sector-grid-2col { grid-template-columns: 1fr; }
        }

        /* 响应式 */
        @media (max-width: 768px) {
            .data-cards { grid-template-columns: 1fr 1fr; }
            .time-controls { flex-direction: column; align-items: stretch; }
            .header-top { flex-direction: column; gap: 8px; }
            .mainline-info { flex-direction: column; align-items: flex-start; }
            .alert-list { flex-direction: column; }
            .alert-item { flex-direction: column; align-items: flex-start; }
            .alerts-card-grid { grid-template-columns: 1fr 1fr; }
        }