:root {
    --bg-primary: #0d1117;
    --bg-secondary: #161b22;
    --bg-tertiary: #1c2128;
    --border: #30363d;
    --text-primary: #e6edf3;
    --text-secondary: #8b949e;
    --text-muted: #6e7681;
    --green: #3fb950;
    --green-bg: rgba(63, 185, 80, 0.12);
    --red: #f85149;
    --red-bg: rgba(248, 81, 73, 0.12);
    --yellow: #d29922;
    --yellow-bg: rgba(210, 153, 34, 0.12);
    --blue: #58a6ff;
    --blue-bg: rgba(88, 166, 255, 0.12);
    --purple: #bc8cff;
    --purple-bg: rgba(188, 140, 255, 0.12);
    --radius: 8px;
    --radius-sm: 4px;
    --font: -apple-system, "Segoe UI", "Microsoft YaHei", sans-serif;
    --mono: "Cascadia Code", "Consolas", monospace;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
    background: var(--bg-primary);
    color: var(--text-primary);
    font-family: var(--font);
    font-size: 14px;
    line-height: 1.5;
    min-height: 100vh;
}

.container { max-width: 1200px; margin: 0 auto; padding: 16px; }

/* Header */
.header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 0;
    border-bottom: 1px solid var(--border);
    margin-bottom: 20px;
}
.header-title {
    font-size: 18px;
    font-weight: 700;
    color: var(--text-primary);
}
.header-title a { color: var(--text-primary); text-decoration: none; }
.header-date {
    font-size: 13px;
    color: var(--text-secondary);
    font-family: var(--mono);
}

/* Tabs */
.tabs {
    display: flex;
    gap: 4px;
    margin-bottom: 20px;
    border-bottom: 1px solid var(--border);
}
.tab {
    padding: 10px 20px;
    cursor: pointer;
    border: none;
    background: transparent;
    color: var(--text-secondary);
    font-size: 14px;
    font-weight: 500;
    border-bottom: 2px solid transparent;
    transition: all 0.15s;
    border-radius: 4px 4px 0 0;
}
.tab:hover { color: var(--text-primary); background: var(--bg-secondary); }
.tab.active {
    color: var(--blue);
    border-bottom-color: var(--blue);
}
.tab-panel { display: none; }
.tab-panel.active { display: block; }

/* Score Section */
.score-hero {
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 24px;
    margin-bottom: 16px;
    display: flex;
    align-items: center;
    gap: 24px;
}
.score-gauge {
    position: relative;
    width: 140px;
    height: 140px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}
.score-gauge svg { transform: rotate(-90deg); width: 100%; height: 100%; }
.score-gauge .gauge-bg { stroke: var(--bg-tertiary); }
.score-gauge .gauge-fill { transition: stroke-dashoffset 0.6s ease; }
.score-gauge .score-num {
    position: absolute;
    font-size: 36px;
    font-weight: 700;
    font-family: var(--mono);
}
.score-gauge .score-label {
    position: absolute;
    bottom: 30px;
    font-size: 12px;
    color: var(--text-secondary);
}
.score-info { flex: 1; }
.score-info .sentiment {
    font-size: 22px;
    font-weight: 700;
    margin-bottom: 4px;
}
.score-info .updated {
    font-size: 12px;
    color: var(--text-muted);
    font-family: var(--mono);
    margin-bottom: 12px;
}
.score-info .base-info {
    font-size: 12px;
    color: var(--text-secondary);
}

/* Category Cards */
.cat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}
.cat-card {
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 12px;
}
.cat-card .cat-name {
    font-size: 13px;
    color: var(--text-secondary);
    margin-bottom: 6px;
}
.cat-card .cat-score {
    font-size: 20px;
    font-weight: 700;
    font-family: var(--mono);
}

/* Indicator List */
.indicator-section {
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 16px;
    margin-bottom: 16px;
}
.indicator-section h3 {
    font-size: 14px;
    color: var(--text-secondary);
    margin-bottom: 12px;
    font-weight: 600;
}
.indicator-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 8px;
}
.indicator-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    background: var(--bg-tertiary);
    border-radius: var(--radius-sm);
}
.indicator-row .ind-value { max-width: 68%; text-align: right; white-space: normal; line-height: 1.45; }
.indicator-row .ind-label {
    font-size: 13px;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: 6px;
}
.indicator-row .ind-value {
    font-size: 13px;
    font-family: var(--mono);
    font-weight: 600;
}
.indicator-row .ind-points {
    font-size: 12px;
    font-family: var(--mono);
    min-width: 50px;
    text-align: right;
}
.dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}
.dot-bullish { background: var(--green); }
.dot-bearish { background: var(--red); }
.dot-neutral { background: var(--text-muted); }

/* News */
.news-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}
.news-col h3 {
    font-size: 14px;
    color: var(--text-secondary);
    margin-bottom: 10px;
    font-weight: 600;
    padding-bottom: 6px;
    border-bottom: 1px solid var(--border);
}
.news-item {
    padding: 10px 0;
    border-bottom: 1px solid var(--border);
}
.news-item:last-child { border-bottom: none; }
.news-item .news-title {
    font-size: 14px;
    color: var(--text-primary);
    line-height: 1.4;
    cursor: pointer;
    margin-bottom: 4px;
}
.news-item .news-title:hover { color: var(--blue); }
.news-item .news-summary {
    font-size: 12px;
    color: var(--text-secondary);
    line-height: 1.5;
    margin-bottom: 4px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.news-item .news-time {
    font-size: 11px;
    color: var(--text-muted);
    font-family: var(--mono);
}

/* Stocks */
.stock-toolbar {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}
.stock-count {
    font-size: 13px;
    color: var(--text-secondary);
}
.stock-filter {
    padding: 4px 10px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.15s;
}
.stock-filter:hover { color: var(--text-primary); border-color: var(--blue); }
.stock-filter.active { background: var(--blue-bg); color: var(--blue); border-color: var(--blue); }

.stock-table {
    width: 100%;
    border-collapse: collapse;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    overflow: hidden;
}
.stock-table th {
    text-align: left;
    padding: 10px 12px;
    font-size: 12px;
    font-weight: 500;
    color: var(--text-secondary);
    background: var(--bg-tertiary);
    border-bottom: 1px solid var(--border);
    white-space: nowrap;
}
.stock-table td {
    padding: 10px 12px;
    font-size: 13px;
    border-bottom: 1px solid var(--border);
}
.stock-table tr:last-child td { border-bottom: none; }
.stock-table tr:hover { background: var(--bg-tertiary); }
.stock-table .num { font-family: var(--mono); text-align: right; }
.stock-table .stock-code { color: var(--text-muted); font-size: 12px; }
.stock-table .stock-name { color: var(--text-primary); font-weight: 500; }
.stock-table .industry-tag {
    display: inline-block;
    padding: 2px 8px;
    background: var(--purple-bg);
    color: var(--purple);
    border-radius: var(--radius-sm);
    font-size: 11px;
}

/* Loading & Error */
.loading {
    text-align: center;
    padding: 40px;
    color: var(--text-secondary);
}
.loading .spinner {
    display: inline-block;
    width: 24px;
    height: 24px;
    border: 2px solid var(--border);
    border-top-color: var(--blue);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
    margin-bottom: 8px;
}
@keyframes spin { to { transform: rotate(360deg); } }

.error-msg {
    text-align: center;
    padding: 20px;
    color: var(--red);
}

/* ---- Margin Module ---- */
.margin-card {
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 16px;
    margin-top: 20px;
}
.margin-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}
.margin-header h3 {
    font-size: 15px;
    font-weight: 600;
    color: var(--text-primary);
}
.margin-date {
    font-size: 12px;
    color: var(--text-muted);
}
.sentiment-header-meta {
    display: flex;
    align-items: center;
    gap: 16px;
}
.sentiment-buy-note {
    color: #f0f4f8;
    font-size: 13px;
    font-weight: 700;
}
.sentiment-sell-note {
    color: #f0f4f8;
    font-size: 13px;
    font-weight: 700;
}
.market-data-timing {
    display: flex;
    flex-wrap: wrap;
    gap: 5px 16px;
    margin: -4px 0 12px;
    padding: 7px 10px;
    border-radius: 6px;
    background: rgba(88, 166, 255, .07);
    color: #8fa3b8;
    font-size: 11px;
    line-height: 1.5;
}
.market-data-timing b {
    color: #c5d2df;
    font-weight: 600;
}
.margin-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 8px;
    margin-bottom: 14px;
}
.margin-stat {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 8px 10px;
    background: var(--bg-tertiary);
    border-radius: var(--radius-sm);
}
.stat-label {
    font-size: 11px;
    color: var(--text-muted);
}
.stat-value {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
    font-family: var(--mono);
}
.sparkline-wrap {
    cursor: pointer;
    border-radius: var(--radius-sm);
    overflow: hidden;
    transition: background 0.2s;
    text-align: center;
}
/* .sparkline-wrap原本是给可点击的小卡片(如首页概览里的迷你走势图)用的hover提示背景；
   日K拖动/缩放图表(risk-sse-chart/sse-index-chart/股票详情页K线)接入pan-zoom后共用了
   同一个类名，鼠标移上去整个容器背景变亮，会让MACD背离确认色块这类半透明色块突然变得
   更明显、且跟不透明的文字背景块颜色对不上，看起来像"背景着色异常"。用data-pan-zoom-ready
   属性把这两种用法区分开，接了拖动缩放的图表不再响应这条hover变色。 */
.sparkline-wrap:not([data-pan-zoom-ready]):hover {
    background: var(--bg-tertiary);
}
/* 个股详情页需要保留类似行情软件的操作反馈：鼠标进入K线工作区时轻微提亮。
   仅恢复个股主图，避免其它共用pan-zoom组件的半透明信号色随背景一起变化。 */
.stock-detail-page #stock-kline-chart[data-pan-zoom-ready]:hover {
    background: var(--bg-tertiary);
}
.stock-detail-page .stock-chart-host:has(#stock-kline-chart[data-pan-zoom-ready]:hover) .daily-fixed-axis,
.stock-detail-page .stock-chart-host:has(#stock-kline-chart[data-pan-zoom-ready]:hover) .daily-fixed-axis span,
.stock-detail-page .stock-chart-host:has(#stock-kline-chart[data-pan-zoom-ready]:hover) .daily-fixed-axis b,
.stock-detail-page .stock-chart-host:has(#stock-kline-chart[data-pan-zoom-ready]:hover) .daily-fixed-legend {
    background: var(--bg-tertiary);
}
/* 每日情绪、每日危险及其对应指数K线使用同一悬停反馈。 */
:is(#sentiment-score-chart,#sse-index-chart,#risk-score-chart,#risk-sse-chart)[data-pan-zoom-ready]:hover {
    background: var(--bg-tertiary);
}
/* 固定纵轴和技术指标标题是图表容器的兄弟浮层，悬停时必须同步提亮，否则会显成矩形色块。 */
*:has(>:is(#sentiment-score-chart,#sse-index-chart,#risk-score-chart,#risk-sse-chart)[data-pan-zoom-ready]:hover) :is(.daily-fixed-axis,.daily-fixed-axis span,.daily-fixed-axis b,.daily-fixed-legend,.daily-risk-axis) {
    background: var(--bg-tertiary);
}
.sparkline {
    width: 100%;
    height: 60px;
    display: block;
}
.sparkline-hint {
    font-size: 11px;
    color: var(--text-muted);
    padding: 4px 0;
}

.market-insight {
    margin-top: 14px;
    padding: 15px 16px;
    background: linear-gradient(135deg, #202a36 0%, #1b2430 100%);
    color: #d7e0ea;
    border: 1px solid #344151;
    border-left: 4px solid #718096;
    border-radius: 8px;
    text-align: left;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .18);
}
.market-insight.positive {
    border-left-color: #5baa78;
    background: linear-gradient(135deg, #20312e 0%, #1b2928 100%);
}
.market-insight.cautious {
    border-left-color: #c57676;
    background: linear-gradient(135deg, #32272c 0%, #292229 100%);
}
.market-insight.stale {
    border-left-color: #c29a5b;
    background: linear-gradient(135deg, #312d25 0%, #292720 100%);
}
.market-insight-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 8px;
    font-size: 13px;
    font-weight: 700;
    color: #aebed0;
}
.market-insight-head strong {
    flex: 0 0 auto;
    padding: 3px 9px;
    border-radius: 999px;
    background: #364354;
    color: #d9e3ee;
    font-size: 12px;
}
.market-insight.positive .market-insight-head strong { background: #29483c; color: #9ed2b1; }
.market-insight.cautious .market-insight-head strong { background: #503137; color: #e3aaaa; }
.market-insight.stale .market-insight-head strong { background: #4c3d28; color: #ddbd83; }
.market-insight-summary {
    margin: 0 0 10px;
    font-size: 14px;
    line-height: 1.7;
    font-weight: 600;
    color: #e2e8f0;
}
.market-insight dl { margin: 0; }
.market-insight dl > div {
    display: grid;
    grid-template-columns: 66px minmax(0, 1fr);
    gap: 10px;
    padding-top: 7px;
    border-top: 1px solid rgba(151, 166, 184, .18);
}
.market-insight dl > div + div { margin-top: 7px; }
.market-insight dt {
    font-size: 12px;
    font-weight: 700;
    color: #8fb3d8;
}
.market-insight dd {
    margin: 0;
    font-size: 12px;
    line-height: 1.65;
    color: #b8c5d3;
}

/* Margin overlay (expanded chart) */
.margin-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;
}
.margin-overlay.show {
    display: flex;
}
.margin-overlay-content {
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 20px;
    max-width: 760px;
    width: 92%;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
}
.margin-overlay-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 14px;
}
.margin-overlay-header h3 {
    font-size: 16px;
    font-weight: 600;
    color: var(--text-primary);
}
.margin-close {
    background: none;
    border: none;
    color: var(--text-muted);
    font-size: 24px;
    cursor: pointer;
    padding: 0 8px;
    line-height: 1;
}
.margin-close:hover {
    color: var(--text-primary);
}
.margin-overlay-stats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    margin-bottom: 14px;
}
.margin-overlay-stats > div {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 6px 10px;
    background: var(--bg-tertiary);
    border-radius: var(--radius-sm);
}
.margin-overlay-stats span {
    font-size: 11px;
    color: var(--text-muted);
}
.margin-overlay-stats b {
    font-size: 14px;
    color: var(--text-primary);
    font-family: var(--mono);
}
.margin-chart-svg {
    width: 100%;
    height: auto;
    max-height: 380px;
}
.margin-overlay-note {
    margin-top: 10px;
    font-size: 11px;
    color: var(--text-muted);
    text-align: center;
}

.margin-overlay-toggle {
    display: flex;
    gap: 4px;
}
.margin-overlay-toggle button {
    padding: 4px 12px;
    border: 1px solid var(--border);
    background: var(--bg-tertiary);
    color: var(--text-secondary);
    border-radius: var(--radius-sm);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.15s;
}
.margin-overlay-toggle button:hover { color: var(--text-primary); border-color: var(--text-muted); }
.margin-overlay-toggle button.active {
    background: var(--blue-bg);
    color: var(--blue);
    border-color: var(--blue);
    font-weight: 600;
}

.empty-state {
    text-align: center;
    padding: 40px;
    color: var(--text-muted);
}

/* Admin Link */
.admin-link {
    font-size: 12px;
    color: var(--text-muted);
    margin-left: 8px;
    padding: 2px 8px;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    text-decoration: none;
    transition: all 0.15s;
}
.admin-link:hover {
    color: var(--blue);
    border-color: var(--blue);
}

/* Articles Panel */
.article-filters {
    display: flex;
    gap: 6px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}
.article-filter {
    padding: 5px 14px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 13px;
    cursor: pointer;
    transition: all 0.15s;
}
.article-filter:hover { color: var(--text-primary); border-color: var(--text-muted); }
.article-filter.active {
    background: var(--blue-bg);
    color: var(--blue);
    border-color: var(--blue);
}
.article-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.article-item {
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 16px 20px;
    cursor: pointer;
    transition: border-color 0.15s;
}
.article-item:hover { border-color: var(--blue); }
.article-meta {
    display: flex;
    gap: 10px;
    align-items: center;
    margin-bottom: 8px;
}
.article-cat {
    font-size: 11px;
    padding: 1px 8px;
    background: var(--blue-bg);
    color: var(--blue);
    border-radius: 3px;
}
.article-date {
    font-size: 12px;
    color: var(--text-muted);
    font-family: var(--mono);
}
.article-title {
    font-size: 16px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 6px;
}
.article-summary {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.6;
}

/* Article Detail Overlay */
.article-overlay {
    display: none;
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0, 0, 0, 0.8);
    z-index: 1000;
    justify-content: center;
    align-items: flex-start;
    overflow-y: auto;
    padding: 40px 16px;
}
.article-overlay.show { display: flex; }
.article-overlay-content {
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 32px;
    max-width: 800px;
    width: 100%;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
}
.article-overlay-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}
.article-overlay-meta {
    display: flex;
    gap: 10px;
    align-items: center;
}
.article-close {
    background: none;
    border: none;
    color: var(--text-muted);
    font-size: 28px;
    cursor: pointer;
    padding: 0 8px;
    line-height: 1;
}
.article-close:hover { color: var(--text-primary); }
.article-overlay-title {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: 12px;
}
.article-overlay-summary {
    font-size: 14px;
    color: var(--text-secondary);
    line-height: 1.8;
    margin-bottom: 20px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--border);
}
.article-overlay-body {
    font-size: 14px;
    color: var(--text-primary);
    line-height: 1.9;
}
.article-overlay-body h1, .article-overlay-body h2, .article-overlay-body h3 {
    margin-top: 20px;
    margin-bottom: 10px;
}
.article-overlay-body p { margin-bottom: 12px; }

/* Responsive */
@media (max-width: 768px) {
    .news-grid { grid-template-columns: 1fr; }
    .score-hero { flex-direction: column; text-align: center; }
    .stock-table { font-size: 12px; }
    .stock-table th, .stock-table td { padding: 6px 8px; }
}
.market-chart-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 18px;
    margin-top: 20px;
}
/* 网格子项默认min-width是"内容最小宽度"，K线图切到半年/一年后内部轨道被撑到几千像素宽，
   会把这个网格item、进而把整个网格和页面一起撑宽；显式设为0让它能正常收缩，内部自己滚动。 */
.market-chart-grid > * { min-width: 0; }

.signal-group-title {
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .08em;
    padding: 10px 2px 0;
    border-bottom: 1px solid var(--border);
}
.sentiment-group-title { color: var(--yellow); }
.technical-group-title { color: #62d6c6; }
.liquidity-group-title { color: var(--blue); margin-top: 8px; }
.overseas-impact-group-title { color: #b59cff; margin-top: 8px; }
.candlestick-svg { width: 100%; height: 220px; display: block; touch-action: pan-y; overflow: visible; }
.candlestick-tooltip { min-height: 24px; padding: 3px 8px; color: #cbd7e5; font: 12px var(--mono); text-align: center; }
.candlestick-float-tooltip {
    position: fixed;
    z-index: 10000;
    display: none;
    align-items: center;
    gap: 9px;
    padding: 7px 10px;
    border: 1px solid #3c4654;
    border-radius: 5px;
    background: rgba(7, 11, 17, .96);
    color: #f1f5f9;
    box-shadow: 0 5px 16px rgba(0, 0, 0, .42);
    font: 13px var(--mono);
    white-space: nowrap;
    pointer-events: none;
    max-width: calc(100% - 12px);
    flex-wrap: wrap;
}
.candlestick-float-tooltip.show { display: flex; }
.candlestick-float-tooltip b { color: #fff; font-weight: 700; }
.candlestick-float-tooltip span { color: #c9d4e1; }
.candlestick-float-tooltip small { font-size:12px; line-height:1.5; }
.candlestick-float-tooltip.volume-tooltip { display:block; width:390px; max-width:calc(100vw - 16px); white-space:normal; }
.candlestick-float-tooltip.volume-tooltip b,.candlestick-float-tooltip.volume-tooltip small { display:block; width:100%; }
.candlestick-float-tooltip.volume-tooltip .volume-rank-range { display:block; margin-top:2px; color:#b8c7d6; font-style:normal; }
.candlestick-float-tooltip .up { color: #35c978; font-weight: 700; }
.candlestick-float-tooltip .down { color: #ef5350; font-weight: 700; }
#nasdaq-chart { position: relative; overflow: visible; }
#gold-chart { position: relative; overflow: visible; }
.nasdaq-chart-legend { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px 18px; padding: 3px 8px 7px; color: var(--text-muted); font-size: 11px; }
.nasdaq-chart-legend span { display: inline-flex; align-items: center; gap: 6px; }
.legend-line { display: inline-block; width: 25px; height: 0; border-top: 2px solid; }
.legend-line.baseline { border-color: #ef5350; border-top-style: dashed; }
.legend-line.ma5 { border-color: #58a6ff; }
.legend-line.ma30 { border-color: #e5b84b; }
.legend-line.ma120 { border-color: #c084fc; }
.legend-line.ma250 { border-color: #f97316; }
.ma-toggle-controls { top:4px; right:10px; z-index:18; display:flex; align-items:center; flex-wrap:wrap; justify-content:flex-end; gap:6px 10px; padding:5px 8px; border:1px solid rgba(70,85,101,.7); border-radius:6px; background:rgba(13,17,23,.88); color:#d5dee8; font-size:11px; box-shadow:0 3px 12px rgba(0,0,0,.28); }
.hourly-ma-controls { z-index:18; display:flex; align-items:center; flex-wrap:wrap; gap:6px 10px; padding:5px 8px; border:1px solid rgba(70,85,101,.7); border-radius:6px; background:rgba(13,17,23,.88); color:#d5dee8; font-size:11px; box-shadow:0 3px 12px rgba(0,0,0,.28); pointer-events:auto; }
.hourly-ma-controls label { display:inline-flex; align-items:center; gap:4px; cursor:pointer; user-select:none; }
.hourly-ma-controls input { width:14px; height:14px; margin:0; accent-color:var(--ma-color); cursor:pointer; }
.hourly-ma-controls i { display:inline-block; width:15px; border-top:2px solid var(--ma-color); }
.hourly-ma-controls span { color:#e6edf3; }
.ma-toggle-controls label { display:inline-flex; align-items:center; gap:4px; cursor:pointer; user-select:none; }
.ma-toggle-controls input { width:14px; height:14px; margin:0; accent-color:var(--ma-color); cursor:pointer; }
.ma-toggle-controls i { display:inline-block; width:15px; border-top:2px solid var(--ma-color); }
.ma-toggle-controls span { color:#e6edf3; }
.technical-subchart { width: 100%; height: 96px; display: block; overflow: hidden!important; }
.technical-subchart[data-plot-top="14"] { height: 120px; }
.volume-rank-marker { cursor:help; pointer-events:all; }
.daily-volume-bar.is-current { opacity:1!important; stroke:#f5f7fa; stroke-width:1.4px; vector-effect:non-scaling-stroke; }
.daily-svg-text-layer .volume-rank-label { display:grid!important; place-items:center; width:20px; height:20px; box-sizing:border-box; border:1px solid rgba(255,255,255,.82); border-radius:50%; background:rgba(13,17,23,.9); color:#fff!important; font-size:14px!important; font-weight:400!important; line-height:1!important; text-shadow:0 1px 2px #000; }
.kdj-sell-marker { cursor: help; }
.kdj-sell-marker circle:last-child { filter: drop-shadow(0 0 3px rgba(255,77,79,.9)); }
.candlestick-float-tooltip.kdj-sell-tooltip { display:block; width:370px; max-width:calc(100% - 12px); padding:0; overflow:hidden; white-space:normal; border:1px solid #7a3439!important; border-radius:9px!important; background:linear-gradient(155deg,#171215 0%,#0d1117 58%,#101820 100%)!important; box-shadow:0 12px 34px rgba(0,0,0,.62),0 0 0 1px rgba(255,91,96,.08) inset!important; font-family:var(--font); }
.kdj-sell-head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 12px 9px; border-bottom:1px solid rgba(255,115,119,.2); background:linear-gradient(90deg,rgba(239,83,80,.17),rgba(239,83,80,.03)); }
.kdj-sell-head>span { display:flex; align-items:baseline; gap:9px; }
.kdj-sell-head b { color:#ff7779!important; font-size:14px; }
.kdj-sell-head time { color:#d7e0e9; font:12px var(--mono); }
.kdj-sell-head>em { padding:3px 7px; border:1px solid rgba(255,119,121,.32); border-radius:10px; color:#ff9b9d; background:rgba(239,83,80,.1); font-size:12px; font-style:normal; white-space:nowrap; }
.kdj-value-row { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; padding:9px 12px 5px; }
.kdj-value-row>span { display:flex; align-items:center; justify-content:center; gap:6px; padding:5px 7px; border:1px solid #2a3744; border-radius:6px; background:rgba(21,29,38,.82); }
.kdj-value-row i { font-style:normal; font-weight:800; }.kdj-value-row span:nth-child(1) i{color:#58a6ff}.kdj-value-row span:nth-child(2) i{color:#f3b33d}.kdj-value-row span:nth-child(3) i{color:#d36cff}
.kdj-value-row b { color:#f6f8fa!important; font:700 12px var(--mono); }
.kdj-sell-explain { padding:5px 12px 11px; line-height:1.48; color:#e6edf3; }
.kdj-sell-explain>strong { display:block; margin-bottom:5px; color:#f2f5f8!important; font-size:14px; }
.kdj-sell-explain ul { display:grid; gap:5px; margin:0; padding:0; list-style:none; }
.kdj-sell-explain li { display:grid; grid-template-columns:18px 1fr; gap:7px; align-items:start; }
.kdj-sell-explain li i { display:grid; place-items:center; width:17px; height:17px; margin-top:1px; border-radius:50%; background:rgba(239,83,80,.17); color:#ff8588; font:700 10px var(--mono); font-style:normal; }
.kdj-sell-explain li span { color:#dce5ed!important; font-size:13px; }
.kdj-sell-explain p { margin:8px 0 0; padding:7px 8px; border-left:2px solid #d6a85f; border-radius:0 4px 4px 0; background:rgba(214,168,95,.08); color:#c6d0da; font-size:12px; }
.technical-panel-title { margin: 8px 0 0; padding: 4px 42px 0; color: #9cabbc; font-size: 11px; text-align: left; border-top: 1px solid #273443; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 2px 10px; }
.chart-marker-legend { display: inline-flex; align-items: center; gap: 3px 10px; font-size: 10.5px; color: #8298ae; flex-wrap: wrap; }
.chart-marker-legend i { display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 3px; vertical-align: middle; }
/* 买点提示明细：命中/未命中分左右两栏，规则一多(现在有90多条)单栏堆叠会拉得很长看不清。 */
.stock-buy-reason-cols { display: flex; gap: 10px; margin: 4px 0; align-items: flex-start; }
.stock-buy-reason-col { flex: 1 1 0; min-width: 0; }
.stock-buy-reason-col + .stock-buy-reason-col { border-left: 1px solid rgba(255,255,255,.14); padding-left: 10px; }
.stock-buy-reason-col-title { font-size: 11px; color: #8298ae; margin-bottom: 3px; font-weight: 600; }
.stock-buy-reason-col div { line-height: 1.5; }
/* 价投栏目(价投视角/困境反转/成长股/高股息/银行股)几张列表共用：表头下拉跟随(position:sticky)。
   top:70px直接沿用stock.php自选股侧栏(.stock-watchlist-rail)已经跟顶部导航栏对齐过的同一个值，
   不用重新估算。第一版sticky完全不生效，排查后是table-wrap的overflow:auto(x/y都设了auto)把
   sticky的定位基准框在了wrap自己身上导致的——已经把5个*-table-wrap的overflow改成只设
   overflow-x，这条才真正跟着页面滚动生效(常见的"响应式横向滚动表格+纵向吸顶表头"组合写法)。
   背景色#141b23跟这几个页面.value-panel/.turnaround-panel等外层卡片的背景一致，避免表头下面
   滚动的行透出来看着分层。 */
.value-table thead th, .turnaround-table thead th, .growth-table thead th, .dividend-table thead th, .bank-table thead th {
    position: sticky; top: 70px; z-index: 5; background: #141b23;
}
#sse-index-chart { position: relative; overflow: visible; }
.daily-chart-tools { display:flex; align-items:center; gap:8px; margin:7px 0 10px; color:#39e6a5; font-size:12px; font-weight:600; }
.daily-chart-tools button { display:grid; place-items:center; width:28px; height:28px; padding:0; border:1px solid #3a5365; border-radius:5px; background:#18232d; color:#dce8f2; font-size:19px; line-height:1; cursor:pointer; }
.daily-chart-tools button:hover { border-color:#39e6a5; color:#39e6a5; }
.daily-chart-tools button:disabled { cursor:not-allowed; opacity:.35; }
.daily-technical-track { min-width:100%; }
.daily-technical-track .candlestick-svg,.daily-technical-track .technical-subchart { width:100%; max-width:none; }
.daily-svg-frame { position:relative; width:100%; }
.daily-svg-frame>svg { position:absolute; inset:0; width:100%; height:100%; }
.daily-svg-text-layer { position:absolute; inset:0; overflow:visible; pointer-events:none; }
.daily-svg-text-layer span { position:absolute; display:block; line-height:1; white-space:nowrap; font-family:var(--mono); }
.daily-svg-text-layer .daily-original-date { display:none; }
.daily-svg-text-layer .daily-moving-axis-text { display:none; }
.daily-svg-text-layer .daily-dynamic-date { top:auto!important; color:#9aacbe; font-size:10px; font-weight:400; }
.daily-technical-track svg line,.daily-technical-track svg polyline { vector-effect:non-scaling-stroke; }
.daily-risk-axis { position:absolute; z-index:9; left:0; width:42px; pointer-events:none; background:#151b22; color:#9fb0c2; font:10px var(--mono); }
.daily-risk-axis span { position:absolute; right:6px; transform:translateY(-50%); white-space:nowrap; }
.daily-risk-axis span.daily-risk-axis-baseline { color:#f85149; font-weight:700; }
.daily-fixed-axis { position:absolute; z-index:10; width:50px; pointer-events:none; background:#151b22; color:#9fb0c2; font:10px var(--mono); }
.daily-fixed-axis span { position:absolute; left:0; right:6px; transform:translateY(-50%); text-align:right; white-space:nowrap; background:#151b22; padding:2px 3px; border-radius:3px; }
.daily-fixed-axis b { position:absolute; top:4px; left:4px; right:2px; color:#a8b9c9; font-size:11px; white-space:nowrap; background:#151b22; padding:2px 3px; border-radius:3px; }
.daily-fixed-axis span.daily-fixed-baseline { color:#ef7774; font-weight:600; }
.daily-fixed-legend { position:absolute; z-index:11; right:12px; display:flex; align-items:center; gap:9px; min-height:22px; padding:0 6px; pointer-events:none; border-bottom:1px solid #273443; background:#151b22; color:#8da2b8; font-size:11px; white-space:nowrap; }
.daily-fixed-legend strong { color:#b8c8d7; }
.daily-technical-track .hourly-indicator-legend,.daily-technical-track .nasdaq-chart-legend,.daily-technical-track .technical-panel-title { display:none; }
#sse-index-chart[data-pan-zoom-ready],#risk-sse-chart[data-pan-zoom-ready],#risk-score-chart[data-pan-zoom-ready] { scrollbar-width:none; -ms-overflow-style:none; overscroll-behavior-x:contain; }
/* 原来只列了三个图表ID，新加的图表容易漏掉导致原生滚动条露出来；改成按共享的
   .homepage-market-chart类统一隐藏，以后新增的拖动图表也会自动生效，不用再逐个补ID。
   小时情绪/危险指数图表(.hourly-chart)是完全独立的一套拖动实现(hourly-sentiment.js的
   enablePan)，不共享这个类，单独列进来跟日线图表保持一致。 */
#sse-index-chart[data-pan-zoom-ready]::-webkit-scrollbar,#risk-sse-chart[data-pan-zoom-ready]::-webkit-scrollbar,#risk-score-chart[data-pan-zoom-ready]::-webkit-scrollbar,.homepage-market-chart[data-pan-zoom-ready]::-webkit-scrollbar,.hourly-chart::-webkit-scrollbar { display:none; width:0; height:0; }
.homepage-market-chart[data-pan-zoom-ready],.hourly-chart { scrollbar-width: none; -ms-overflow-style:none; }
#sse-index-chart[data-pan-zoom-ready].is-dragging,#risk-sse-chart[data-pan-zoom-ready].is-dragging,.hourly-chart.is-dragging { cursor:grabbing; }

.homepage-market-chart {
    min-height: 180px;
    cursor: crosshair;
}

.homepage-market-chart .sparkline {
    width: 100%;
    height: 180px;
    display: block;
    touch-action: pan-y;
    overflow: visible;
}
.breadth-building {
    margin: 10px 0 4px;
    padding: 22px 14px;
    border: 1px dashed #465568;
    border-radius: 7px;
    color: #94a7bb;
    background: rgba(88, 166, 255, .05);
    text-align: center;
    font-size: 12px;
}

.homepage-range-toggle {
    display: flex;
    gap: 6px;
    margin: -2px 0 12px;
}
.futures-product-toggle { flex-wrap: wrap; }
.futures-product-toggle button { flex: 0 1 auto; }
.homepage-range-toggle button {
    border: 1px solid var(--border);
    background: var(--bg-tertiary);
    color: var(--text-muted);
    border-radius: 5px;
    padding: 4px 12px;
    cursor: pointer;
}
.homepage-range-toggle button.active {
    color: #fff;
    border-color: var(--blue);
    background: var(--blue);
}
.prosperity-hero { margin:20px 0 18px;padding:20px;border:1px solid #31536b;border-radius:8px;background:linear-gradient(135deg,rgba(45,92,118,.22),rgba(25,36,48,.75)); }
.prosperity-hero div { display:flex;align-items:baseline;gap:14px; }
.prosperity-hero span { color:#9eb3c7;font-size:13px; }
.prosperity-hero strong { color:#79d6c4;font-size:25px; }
.prosperity-hero p { margin:10px 0;color:#c1cedb;font-size:13px; }
.prosperity-hero small { color:#9aacbe; }
.consumer-hero{display:grid;grid-template-columns:minmax(250px,.8fr) minmax(520px,1.4fr);gap:24px;margin:20px 0;padding:24px;border:1px solid #34506a;border-radius:12px;background:linear-gradient(135deg,rgba(27,67,91,.35),#111820)}.consumer-hero.improving{border-color:#8a7136}.consumer-hero.confirmed{border-color:#27836c;background:linear-gradient(135deg,rgba(24,105,83,.3),#111820)}.consumer-hero>div:first-child>span{color:#8fa9bf;font-size:12px}.consumer-hero>div:first-child>strong{display:block;margin:8px 0;color:#f1f6fa;font-size:28px}.consumer-hero>div:first-child p{margin:0;color:#a8bbcc}.consumer-hero>div:first-child b{color:#56d6af;font-size:24px}.consumer-score-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.consumer-score-cards article{display:flex;flex-direction:column;justify-content:center;min-height:78px;border:1px solid #304252;border-radius:9px;background:rgba(7,13,19,.42);text-align:center}.consumer-score-cards small{color:#9aacbe}.consumer-score-cards b{margin-top:7px;color:#eaf2f8;font-size:20px}.consumer-chart-card{padding-bottom:12px}.consumer-legend{color:#8ea3b6;font-size:12px}.consumer-legend i{display:inline-block;width:18px;height:3px;margin:0 5px 3px 12px}.consumer-legend .total{background:#43d3ad}.consumer-legend .leading{background:#f0b84b}.consumer-legend .sync{background:#5aa7ef}.consumer-score-svg{display:block;width:100%;height:300px;padding:0 16px;box-sizing:border-box}.consumer-score-svg text{fill:#7992aa;font-size:11px}.consumer-grid{stroke:#293948;stroke-width:1}.consumer-grid.mid{stroke:#667989;stroke-dasharray:6 5}.consumer-line{fill:none;stroke-width:2.4;vector-effect:non-scaling-stroke}.consumer-line.total{stroke:#43d3ad;stroke-width:3}.consumer-line.leading{stroke:#f0b84b}.consumer-line.sync{stroke:#5aa7ef}.consumer-signal-dot{fill:#f5c451;stroke:#111820;stroke-width:2}.consumer-signal-dot.level-2,.consumer-signal-dot.level-3{fill:#ff6666}.consumer-chart-note{margin:0 20px 8px;color:#9aacbe;font-size:12px;text-align:center}.consumer-component-table{padding:0 18px 16px}.consumer-component-table>div{display:grid;grid-template-columns:2fr repeat(5,1fr);gap:12px;align-items:center;min-height:46px;border-bottom:1px solid #293642}.consumer-component-table .head{color:#9aacbe;font-size:12px}.consumer-component-table strong{color:#e8eff5}.consumer-component-table span{color:#b8c6d2}.consumer-component-table .up{color:#ff6464}.consumer-component-table .down{color:#39ce88}.consumer-method{margin:18px 0;padding:20px;border:1px solid #303e4b;border-radius:10px;background:#151c24}.consumer-method h2{margin:0 0 10px;font-size:17px}.consumer-method p{color:#adbdca;line-height:1.7}.consumer-method small{color:#9aacbe}@media(max-width:850px){.consumer-hero{grid-template-columns:1fr}.consumer-score-cards{grid-template-columns:repeat(2,1fr)}.consumer-component-table{overflow-x:auto}.consumer-component-table>div{min-width:700px}}
.consumer-chart-interactive{position:relative}.consumer-score-svg{cursor:crosshair}.consumer-chart-cursor{position:absolute;display:none;left:0;top:18px;bottom:34px;width:0;pointer-events:none}.consumer-chart-cursor>i{position:absolute;top:0;bottom:0;border-left:1px dashed #91a6b9}.consumer-chart-cursor>b{position:absolute;left:-5px;width:8px;height:8px;border:2px solid #0f161e;border-radius:50%}.consumer-chart-cursor>b.total{background:#43d3ad}.consumer-chart-cursor>b.leading{background:#f0b84b}.consumer-chart-cursor>b.sync{background:#5aa7ef}.consumer-chart-tooltip{position:absolute;z-index:8;display:none;top:18px;min-width:190px;padding:12px 14px;border:1px solid #52677a;border-radius:8px;background:rgba(8,14,20,.92);box-shadow:0 8px 28px rgba(0,0,0,.4);pointer-events:none;transition:left .08s ease,right .08s ease}.consumer-chart-tooltip strong{display:block;margin-bottom:8px;color:#f0f5f9}.consumer-chart-tooltip div{display:flex;justify-content:space-between;gap:22px;padding:3px 0;color:#8fa4b7;font-size:12px}.consumer-chart-tooltip b{color:#edf4f9}.consumer-chart-tooltip b.up{color:#ff6969}.consumer-chart-tooltip b.down{color:#39ce88}
.consumer-chart-tooltip .driver{margin-top:4px;padding-top:7px;border-top:1px solid #2c3a47}.consumer-chart-tooltip .driver b{max-width:145px;text-align:right}
.consumer-chart-tooltip{position:relative;top:auto;left:auto!important;right:auto!important;min-width:0;margin:4px 20px 14px;padding:16px 18px;background:#111a23;box-shadow:none;pointer-events:auto}.consumer-chart-tooltip{display:grid!important;grid-template-columns:minmax(390px,.85fr) minmax(0,1.15fr);gap:24px}.consumer-chart-tooltip>.consumer-period-stats{display:grid!important;grid-template-columns:repeat(3,minmax(92px,1fr));gap:8px;align-content:start;min-width:0}.consumer-chart-tooltip>.consumer-period-stats>strong{display:block;grid-column:1/-1;margin:0 0 3px;white-space:nowrap}.consumer-chart-tooltip>.consumer-period-stats>div{display:block!important;min-width:0;padding:8px 10px;border:1px solid #2b3c4b;border-radius:6px;background:#0d151d}.consumer-chart-tooltip>.consumer-period-stats span,.consumer-chart-tooltip>.consumer-period-stats b{display:block;white-space:nowrap}.consumer-chart-tooltip>.consumer-period-stats b{margin-top:4px;font-size:16px}.consumer-chart-tooltip>.consumer-period-reading{display:block!important;min-width:0;padding-left:20px;border-left:1px solid #324250}.consumer-chart-tooltip>.consumer-period-reading>strong{display:block;font-size:17px;color:#edf5f8}.consumer-chart-tooltip>.consumer-period-reading p{display:block;margin:8px 0;color:#b9c8d3;line-height:1.65}.consumer-chart-tooltip>.consumer-period-reading small{display:block;color:#9aacbe;line-height:1.6}.consumer-chart-tooltip .consumer-period-drivers{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:10px}.consumer-period-drivers span{min-width:0;color:#829aad;font-size:12px}.consumer-period-drivers b{color:#dce8f0}.consumer-index-guide{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:12px 0 14px}.consumer-index-guide article{padding:15px;border:1px solid #2d3c49;border-radius:8px;background:#101720}.consumer-index-guide b{color:#eaf2f7}.consumer-index-guide p{margin:8px 0 0;font-size:12px}.consumer-signal-rule{padding-top:12px;border-top:1px solid #2d3b47}.consumer-signal-rule b{color:#e7eef4}@media(max-width:900px){.consumer-chart-tooltip{grid-template-columns:1fr}.consumer-chart-tooltip>.consumer-period-reading{padding:14px 0 0;border-left:0;border-top:1px solid #324250}.consumer-index-guide{grid-template-columns:1fr}}@media(max-width:520px){.consumer-chart-tooltip>.consumer-period-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.consumer-chart-tooltip .consumer-period-drivers{grid-template-columns:1fr}}
.consumer-roadmap{margin:18px 0;padding:20px;border:1px solid #303e4b;border-radius:10px;background:#141b23}.consumer-roadmap h2{margin:0 0 14px;font-size:17px}.consumer-roadmap>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.consumer-roadmap article{padding:15px;border-radius:8px;background:#101720;border-top:3px solid #4a718f}.consumer-roadmap article:nth-child(2){border-top-color:#b28a3d}.consumer-roadmap article:nth-child(3){border-top-color:#566574}.consumer-roadmap b{color:#eef4f8}.consumer-roadmap p{margin:8px 0 0;color:#91a5b7;font-size:12px;line-height:1.7}@media(max-width:700px){.consumer-roadmap>div{grid-template-columns:1fr}}
.prosperity-card { margin-bottom:18px; }
.profit-regime{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(420px,1fr);gap:22px;margin:20px 0 18px;padding:22px;border:1px solid #344557;border-radius:12px;background:linear-gradient(135deg,#17212c,#111820)}.profit-regime>div:first-child>span{color:#82a1bd;font-size:12px}.profit-regime>div:first-child>strong{display:block;margin:7px 0;color:#f2f6fa;font-size:25px}.profit-regime>div:first-child>p{margin:0;color:#a8bacb;line-height:1.75}.profit-regime.industry{border-color:#75513b;background:linear-gradient(135deg,rgba(116,66,32,.28),#111820)}.profit-regime.consumer{border-color:#27665d;background:linear-gradient(135deg,rgba(25,105,91,.24),#111820)}.profit-regime.balanced{border-color:#416c91}.profit-regime.weak{border-color:#70434b}.profit-score-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.profit-score-grid article{padding:13px;border:1px solid #2e3c4b;border-radius:8px;background:rgba(8,13,19,.38);text-align:center}.profit-score-grid small,.profit-score-grid em{display:block;color:#9aacbe;font-size:11px;font-style:normal}.profit-score-grid b{display:block;margin:6px 0;color:#ecf3f9;font-size:19px}.profit-score-grid b.up{color:#ff6565}.profit-score-grid b.down{color:#38cc85}.profit-chain-map,.profit-reading-guide{margin:18px 0;padding:20px;border:1px solid #303b47;border-radius:10px;background:#151b23}.profit-chain-map h2,.profit-reading-guide h2{margin:0 0 15px;font-size:17px}.profit-chain-map>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.profit-chain-map article{padding:16px;border-radius:8px;background:#101720;border-top:3px solid #60758b}.profit-chain-map article.upstream{border-top-color:#e1914c}.profit-chain-map article.midstream{border-top-color:#65a4df}.profit-chain-map article.consumer{border-top-color:#44c6a2}.profit-chain-map article span{display:block;color:#8398ab;font-size:12px}.profit-chain-map article strong{display:block;margin:6px 0 9px;color:#f0f5f9}.profit-chain-map article p{margin:0;color:#9caebe;font-size:12px;line-height:1.75}.profit-reading-guide ol{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:0;padding:0;list-style:none;counter-reset:profit-step}.profit-reading-guide li{position:relative;padding-left:34px;color:#9dafbf;font-size:13px;line-height:1.7;counter-increment:profit-step}.profit-reading-guide li:before{content:counter(profit-step);position:absolute;left:0;top:1px;width:24px;height:24px;border-radius:50%;background:#25384b;color:#8fc7ff;text-align:center;line-height:24px}.profit-reading-guide b{color:#e8f0f7}@media(max-width:850px){.profit-regime{grid-template-columns:1fr}.profit-chain-map>div,.profit-reading-guide ol{grid-template-columns:1fr}.profit-score-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:520px){.profit-score-grid{grid-template-columns:1fr}}

@media (max-width: 560px) {
    .market-insight { padding: 13px 12px; }
    .market-insight dl > div { grid-template-columns: 1fr; gap: 3px; }
    .market-insight-summary { font-size: 13px; }
}
/* SEO indicator entry links */
.seo-entry-links{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin:12px 0 18px;padding:10px 12px;background:#151b23;border:1px solid #2c3744;border-radius:8px;color:#8fa0b2;font-size:13px}
.seo-entry-links a{color:#68b3ff;text-decoration:none}.seo-entry-links a:hover{text-decoration:underline;color:#9ed2ff}
.title-detail-link{font-size:.72em;color:#68b3ff;text-decoration:none;font-weight:400;margin-left:6px}.title-detail-link:hover{text-decoration:underline;color:#9ed2ff}
.site-head{max-width:1100px;margin:0 auto 24px;padding:18px 20px;border-bottom:1px solid #2d3947;display:flex;align-items:center;justify-content:space-between}.site-head .brand{font-size:20px;font-weight:700;color:#e7eef7;text-decoration:none}.site-head nav{display:flex;gap:18px}.site-head nav a{color:#91a5bb;text-decoration:none;font-size:14px}.site-head nav a:hover{color:#68b3ff}.site-foot{max-width:1100px;margin:28px auto 0;padding:20px;color:#9aacbe;border-top:1px solid #293646;font-size:12px;text-align:center}
.sector-type-toggle{margin:0 0 18px}.sector-type-toggle a{display:inline-flex;align-items:center;padding:8px 16px;border:1px solid var(--border);border-radius:6px;color:var(--text-muted);text-decoration:none}.sector-type-toggle a.active{background:#3189e8;color:#fff;border-color:#3189e8}.sector-event-list{padding:8px 18px 18px}.sector-event-card{display:grid;grid-template-columns:78px minmax(0,1fr) 82px;gap:16px;align-items:center;padding:16px 4px;border-bottom:1px solid var(--border)}.sector-event-card:last-child{border-bottom:0}.sector-event-card time{display:grid;gap:3px;color:#f0b84b}.sector-event-card time b{font-size:18px}.sector-event-card time small{font-size:11px;color:var(--text-muted)}.sector-event-card h3{display:inline;margin:0 8px;font-size:17px}.sector-event-card p{margin:7px 0;color:var(--text)}.sector-event-card small{color:var(--text-muted)}.sector-event-card>strong{text-align:right;color:#ff5b5b;font-size:20px}.sector-event-card>strong em{font-size:12px;font-style:normal}.sector-kind{padding:3px 7px;border-radius:4px;background:rgba(49,137,232,.16);color:#69b1ff;font-size:12px}@media(max-width:700px){.sector-event-card{grid-template-columns:62px minmax(0,1fr)}.sector-event-card>strong{grid-column:2;text-align:left}}
.hourly-indicator-legend{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:5px 0 8px;color:var(--text-muted);font-size:11px}.hourly-guide{margin-top:18px}.hourly-guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.hourly-guide article{padding:16px;border:1px solid var(--border);border-radius:8px;background:var(--bg-secondary)}.hourly-guide h3{margin-top:0}.hourly-guide p{line-height:1.75}.hourly-guide a{color:var(--blue)}.candlestick-float-tooltip small{display:block;width:100%;color:#b8c7d6}@media(max-width:720px){.hourly-guide-grid{grid-template-columns:1fr}}
.candlestick-float-tooltip{border-color:#9aacbe!important;background:#050505!important;color:#fff!important;border-radius:5px!important;box-shadow:0 6px 20px rgba(0,0,0,.55)!important}.candlestick-float-tooltip b,.candlestick-float-tooltip span,.candlestick-float-tooltip small{color:#fff!important}.candlestick-float-tooltip .up{color:#ef5350!important}.candlestick-float-tooltip .down{color:#35c978!important}
.stock-detail-page #stock-kline-chart>.candlestick-tooltip{display:none}
.value-specialty-link{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 24px}.value-specialty-link a{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:15px 17px;border:1px solid #315272;border-radius:10px;background:linear-gradient(135deg,rgba(42,115,177,.22),rgba(20,29,38,.9));color:#e8f2fb;text-decoration:none;transition:border-color .18s,transform .18s}.value-specialty-link a:hover{border-color:#4b8bc5;transform:translateY(-1px)}.value-specialty-link strong{font-size:15px;white-space:nowrap}.value-specialty-link span{color:#8fa8bd;font-size:12px;text-align:right}.value-stock-heading{display:flex;align-items:center;justify-content:space-between;margin:0 0 12px}.value-stock-heading>div{display:flex;align-items:baseline;gap:12px}.value-stock-heading strong{font-size:17px;color:#e8f2fb}.value-stock-heading span{font-size:12px;color:#7f91a5}.value-stock-heading>a{color:#52b7ff;font-size:13px;text-decoration:none}.stock-table-wrap{overflow-x:auto}.stock-result-link{text-decoration:none}.stock-result-link:hover .stock-name{color:var(--blue)}@media(max-width:650px){.value-specialty-link{grid-template-columns:1fr}.value-specialty-link a{align-items:flex-start;flex-direction:column;gap:5px}.value-specialty-link span{text-align:left}.value-stock-heading{align-items:flex-start}.value-stock-heading>div{align-items:flex-start;flex-direction:column;gap:3px}}

.member-signal-lock{display:flex;align-items:center;justify-content:space-between;gap:24px;border-color:#67552d;background:linear-gradient(120deg,rgba(130,94,30,.2),#151b22 62%)}.member-signal-lock>div>span{color:#dfb95f;font-size:11px;font-weight:700;letter-spacing:.12em}.member-signal-lock h2{margin:5px 0 7px}.member-signal-lock p{margin:0;color:#a99e8a;font-size:13px}.member-signal-lock>a{flex:none;padding:9px 14px;border:1px solid #806b37;border-radius:7px;color:#efd387;text-decoration:none;font-size:12px}@media(max-width:650px){.member-signal-lock{align-items:flex-start;flex-direction:column}}
