/* 自定义样式 */

:root {
    --primary-color: #0d6efd;
    --secondary-color: #6c757d;
    --success-color: #198754;
    --danger-color: #dc3545;
    --warning-color: #ffc107;
    --info-color: #0dcaf0;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    background-color: #f8f9fa;
}

/* 导航栏样式 */
.navbar-brand {
    font-weight: 600;
    font-size: 1.25rem;
}

/* 侧边栏样式 */
.list-group-item {
    border: none;
    border-radius: 0.375rem;
    margin-bottom: 0.25rem;
}

.list-group-item:hover {
    background-color: #e9ecef;
}

.list-group-item.active {
    background-color: var(--primary-color);
    border-color: var(--primary-color);
}

/* 卡片样式 */
.card {
    border: none;
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
    margin-bottom: 1.5rem;
}

.card-header {
    background-color: #fff;
    border-bottom: 1px solid #dee2e6;
    font-weight: 600;
}

/* 表格样式 */
.table {
    background-color: #fff;
}

.table thead th {
    background-color: #f8f9fa;
    border-bottom: 2px solid #dee2e6;
    font-weight: 600;
}

/* 按钮样式 */
.btn {
    border-radius: 0.375rem;
}

/* 加载动画 */
.loading {
    display: inline-block;
    width: 20px;
    height: 20px;
    border: 3px solid rgba(0, 0, 0, 0.1);
    border-radius: 50%;
    border-top-color: var(--primary-color);
    animation: spin 1s ease-in-out infinite;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

/* 图表容器 */
.chart-container {
    width: 100%;
    height: 400px;
    margin: 20px 0;
}

.chart-container-large {
    width: 100%;
    height: 600px;
    margin: 20px 0;
}

/* 条件构建器样式 */
.condition-builder {
    background-color: #f8f9fa;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    padding: 1rem;
    margin-bottom: 1rem;
}

.condition-item {
    background-color: #fff;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    padding: 0.75rem;
    margin-bottom: 0.5rem;
}

.condition-preview {
    background-color: #f8f9fa;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    padding: 1rem;
    font-family: 'Courier New', monospace;
    font-size: 0.875rem;
    max-height: 300px;
    overflow-y: auto;
}

/* 响应式调整 */
@media (max-width: 768px) {
    .col-md-2 {
        display: none !important;
    }
    
    .col-md-10 {
        flex: 0 0 100%;
        max-width: 100%;
    }
}

/* 工具提示 */
.tooltip-inner {
    max-width: 300px;
}

/* 徽章样式 */
.badge {
    padding: 0.35em 0.65em;
    font-weight: 500;
}

/* 状态指示器 */
.status-indicator {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    margin-right: 5px;
}

.status-indicator.active {
    background-color: var(--success-color);
}

.status-indicator.inactive {
    background-color: var(--secondary-color);
}

/* 分页样式 */
.pagination {
    margin-top: 1rem;
}

/* 搜索框样式 */
.search-box {
    max-width: 300px;
}

/* ============================================
   统一UI组件系统 v1.0
   ============================================ */

/* 色彩变量 */
:root {
    --tr-primary: #3b82f6;
    --tr-success: #10b981;
    --tr-warning: #f59e0b;
    --tr-danger: #ef4444;
    --tr-purple: #8b5cf6;
    --tr-gray-50: #f8fafc;
    --tr-gray-100: #f1f5f9;
    --tr-gray-200: #e2e8f0;
    --tr-gray-500: #64748b;
    --tr-gray-700: #334155;
    --tr-gray-900: #0f172a;
}

/* 页面头部 */
.page-header {
    background: linear-gradient(135deg, #1e3a5f 0%, #2d5a87 100%);
    color: white;
    padding: 1.5rem 2rem;
    margin: -1rem -1rem 1.5rem -1rem;
}

.page-header .page-title {
    font-size: 1.5rem;
    font-weight: 600;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* 统计卡片 - 新版 */
.stat-card {
    background: white;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    border: 1px solid var(--tr-gray-200);
    height: 100%;
    display: flex;
    flex-direction: column;
}

.stat-card .stat-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    flex-shrink: 0;
}

.stat-card .stat-icon.blue {
    background: linear-gradient(135deg, #3b82f6 0%, #60a5fa 100%);
    color: white;
}

.stat-card .stat-icon.green {
    background: linear-gradient(135deg, #10b981 0%, #34d399 100%);
    color: white;
}

.stat-card .stat-icon.purple {
    background: linear-gradient(135deg, #8b5cf6 0%, #a78bfa 100%);
    color: white;
}

.stat-card .stat-icon.orange {
    background: linear-gradient(135deg, #f59e0b 0%, #fbbf24 100%);
    color: white;
}

.stat-card .stat-icon.gray {
    background: linear-gradient(135deg, #64748b 0%, #94a3b8 100%);
    color: white;
}

.stat-card .stat-label {
    font-size: 0.85rem;
    color: var(--tr-gray-500);
    font-weight: 500;
}

.stat-card .stat-value {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--tr-gray-900);
    line-height: 1.2;
}

.stat-card .stat-value small {
    font-size: 0.85rem;
    font-weight: 400;
    color: var(--tr-gray-500);
}

.stat-card .stat-date {
    font-size: 0.75rem;
    color: var(--tr-gray-500);
    margin-top: 4px;
}

/* 状态徽章 */
.status-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    border-radius: 20px;
    font-size: 0.75rem;
    font-weight: 500;
}

.status-badge.success {
    background: #d1fae5;
    color: #065f46;
}

.status-badge.warning {
    background: #fef3c7;
    color: #92400e;
}

.status-badge.danger {
    background: #fee2e2;
    color: #991b1b;
}

.status-badge.info {
    background: #dbeafe;
    color: #1e40af;
}

/* 信息提示框 */
.info-tip {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 12px 16px;
    background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
    border-radius: 8px;
    font-size: 0.85rem;
    color: #1e40af;
    border-left: 3px solid #3b82f6;
}

.info-tip i {
    flex-shrink: 0;
    margin-top: 2px;
}

.info-tip.warning {
    background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);
    color: #92400e;
    border-left-color: #f59e0b;
}

.info-tip.success {
    background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);
    color: #065f46;
    border-left-color: #10b981;
}

/* 健康度面板 */
.health-panel {
    background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);
    border-radius: 12px;
    padding: 20px;
    border: 1px solid #a7f3d0;
}

.health-panel .health-score {
    font-size: 2rem;
    font-weight: 700;
    color: #059669;
    line-height: 1;
}

.health-panel .health-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 0;
    font-size: 0.9rem;
}

.health-panel .health-item i {
    font-size: 1rem;
}

/* 差异面板 */
.diff-panel {
    background: var(--tr-gray-50);
    border-radius: 8px;
    padding: 16px;
}

.diff-panel .diff-item {
    display: flex;
    justify-content: space-between;
    padding: 8px 0;
    border-bottom: 1px dashed var(--tr-gray-200);
}

.diff-panel .diff-item:last-child {
    border-bottom: none;
}

.diff-panel .diff-highlight {
    background: #fef3c7;
    padding: 8px 12px;
    border-radius: 6px;
    margin-top: 12px;
    display: flex;
    justify-content: space-between;
    font-weight: 600;
}

/* 统一卡片 */
.card-unified {
    background: white;
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    border: 1px solid var(--tr-gray-200);
    overflow: hidden;
}

.card-unified .card-header {
    background: var(--tr-gray-50);
    padding: 16px 20px;
    border-bottom: 1px solid var(--tr-gray-200);
    font-weight: 600;
    font-size: 1rem;
    display: flex;
    align-items: center;
    gap: 8px;
}

.card-unified .card-body {
    padding: 20px;
}

/* Tab操作区样式 */
.ops-tabs {
    border-bottom: 2px solid var(--tr-gray-200);
    gap: 4px;
}

.ops-tabs .nav-link {
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    padding: 10px 20px;
    color: var(--tr-gray-500);
    font-weight: 500;
    transition: all 0.2s;
}

.ops-tabs .nav-link:hover {
    color: var(--tr-primary);
    background: transparent;
}

.ops-tabs .nav-link.active {
    color: var(--tr-primary);
    border-bottom-color: var(--tr-primary);
    background: transparent;
}

/* 缺失股票列表 */
.missing-stock-list {
    max-height: 200px;
    overflow-y: auto;
}

.missing-stock-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 12px;
    border-bottom: 1px solid var(--tr-gray-100);
    font-size: 0.85rem;
}

.missing-stock-item:hover {
    background: var(--tr-gray-50);
}

.missing-stock-item:last-child {
    border-bottom: none;
}

/* 策略历史数据卡片 */
.strategy-history-card {
    background: white;
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    border: 1px solid var(--tr-gray-200);
    padding: 20px;
    height: 100%;
}

.strategy-history-card .card-title {
    font-weight: 600;
    font-size: 1rem;
    margin-bottom: 16px;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* 自动任务折叠面板 */
.auto-task-panel {
    background: var(--tr-gray-50);
    border-radius: 8px;
    padding: 16px;
}

.auto-task-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 12px 0;
    border-bottom: 1px solid var(--tr-gray-200);
}

.auto-task-item:last-child {
    border-bottom: none;
}

.auto-task-item .task-time {
    font-weight: 600;
    color: var(--tr-primary);
    white-space: nowrap;
}

.auto-task-item .task-desc {
    font-size: 0.85rem;
    color: var(--tr-gray-700);
}

/* 按钮增强 */
.btn-sm {
    border-radius: 8px;
    padding: 6px 12px;
    font-size: 0.85rem;
}

.btn-primary {
    background: var(--tr-primary);
    border-color: var(--tr-primary);
}

.btn-primary:hover {
    background: #2563eb;
    border-color: #2563eb;
}

.btn-success {
    background: var(--tr-success);
    border-color: var(--tr-success);
}

.btn-success:hover {
    background: #059669;
    border-color: #059669;
}

.btn-warning {
    background: var(--tr-warning);
    border-color: var(--tr-warning);
    color: white;
}

.btn-warning:hover {
    background: #d97706;
    border-color: #d97706;
    color: white;
}

/* 大型主操作按钮 */
.btn-lg-action {
    padding: 16px 32px;
    font-size: 1rem;
    font-weight: 600;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

/* 表单增强 */
.form-select-sm, .form-control-sm {
    border-radius: 6px;
    border-color: var(--tr-gray-200);
}

.form-select-sm:focus, .form-control-sm:focus {
    border-color: var(--tr-primary);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

/* 数据统计汇总栏 */
.stats-bar {
    display: flex !important;
    flex-direction: row !important;
    justify-content: space-between;
    align-items: center;
    background: white;
    border-radius: 0 0 12px 12px;
    padding: 20px 32px;
    gap: 16px;
}

.stats-bar .stat-item {
    flex: 1;
    min-width: 100px;
    text-align: center;
    padding: 8px 12px;
    border-right: 1px solid var(--tr-gray-200);
}

.stats-bar .stat-item:last-child {
    border-right: none;
}

.stats-bar .stat-item .stat-value {
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--tr-gray-900);
    white-space: nowrap;
}

.stats-bar .stat-item .stat-label {
    font-size: 0.75rem;
    color: var(--tr-gray-500);
    margin-top: 4px;
    white-space: nowrap;
}

@media (max-width: 992px) {
    .stats-bar {
        flex-wrap: wrap;
        justify-content: center;
    }
    .stats-bar .stat-item {
        flex: 0 0 auto;
        min-width: 120px;
        border-right: none;
        border-bottom: 1px solid var(--tr-gray-200);
        padding-bottom: 12px;
        margin-bottom: 8px;
    }
    .stats-bar .stat-item:last-child {
        border-bottom: none;
    }
}

/* 健康面板警告样式 */
.health-panel.warning {
    background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
    border: 1px solid #f59e0b;
}

.health-panel.warning .health-score {
    color: #d97706;
}

/* 响应式优化 */
@media (max-width: 1400px) {
    .stat-card .stat-value {
        font-size: 1.5rem;
    }
}

/* ============================================
   Value Discovery 研究中心样式
   ============================================ */

.vd-page-header {
    background: linear-gradient(120deg, #1f3a5f 0%, #2f6c8f 100%);
    border-radius: 12px;
    margin: 0 0 1rem 0;
    padding: 1.25rem 1.5rem;
}

.vd-focus-card .card-body {
    padding: 0;
}

.vd-focus-card .card-header {
    min-height: 58px;
    display: flex;
    align-items: center;
}

.vd-focus-list {
    max-height: none;
}

.vd-focus-scroll {
    /* 约等于 5 个条目高度，超过后内部滚动 */
    max-height: 412px;
    overflow-y: auto;
    scrollbar-gutter: stable;
}

.vd-summary-card .card-body {
    padding-top: 14px;
    padding-bottom: 14px;
}

.vd-summary-text {
    font-size: 1.08rem;
    line-height: 1.75;
    color: var(--tr-gray-900);
}

.vd-focus-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    min-height: 82px;
    border-bottom: 1px solid var(--tr-gray-200);
}

.vd-focus-item:last-child {
    border-bottom: none;
}

.vd-focus-item:hover {
    background: var(--tr-gray-50);
}

.vd-focus-text {
    min-width: 0;
    flex: 1;
}

.vd-focus-title {
    font-size: 1rem;
    font-weight: 700;
    color: var(--tr-gray-900);
    line-height: 1.25;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.vd-focus-meta {
    margin-top: 4px;
    font-size: 0.8rem;
    color: var(--tr-gray-500);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.vd-focus-action {
    flex-shrink: 0;
    white-space: nowrap;
}

.vd-stock-name {
    font-size: 1rem;
    font-weight: 700;
    color: var(--tr-gray-900);
    line-height: 1.25;
}

.vd-stock-code {
    font-size: 0.8rem;
    color: var(--tr-gray-500);
    margin-top: 3px;
}

.vd-completeness-main {
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f172a;
    line-height: 1.2;
}

.vd-mini-progress {
    height: 6px;
    margin-top: 6px;
    background-color: #e2e8f0;
}

.vd-mini-progress .progress-bar {
    background: linear-gradient(90deg, #1d4ed8 0%, #60a5fa 100%);
}

.vd-return-value {
    font-weight: 700;
    font-size: 0.96rem;
}

.vd-return-value.up {
    color: #047857;
}

.vd-return-value.down {
    color: #b45309;
}

.vd-return-value.flat {
    color: #334155;
}

.vd-kv-label {
    font-size: 0.75rem;
    color: var(--tr-gray-500);
    margin-bottom: 4px;
}

.vd-digest-item {
    background: var(--tr-gray-50);
    border: 1px solid var(--tr-gray-200);
    border-radius: 8px;
    padding: 10px 12px;
}

.vd-change-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.vd-change-card {
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    border: 1px solid var(--tr-gray-200);
    border-radius: 10px;
    padding: 10px 12px;
}

.vd-change-value {
    font-size: 1rem;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.vd-change-value.up {
    color: #047857;
}

.vd-change-value.down {
    color: #b45309;
}

.vd-change-value.flat,
.vd-change-value.na {
    color: var(--tr-gray-700);
}

.vd-peer-insight {
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    border: 1px solid var(--tr-gray-200);
    border-radius: 10px;
    padding: 10px 12px;
}

.vd-business-card {
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    border: 1px solid var(--tr-gray-200);
    border-radius: 10px;
    padding: 12px;
}

.vd-deep-analysis {
    border-color: #bbf7d0;
    box-shadow: 0 14px 36px rgba(15, 118, 110, 0.08);
}

.vd-data-microscope {
    border-color: #99f6e4;
    box-shadow: 0 16px 38px rgba(13, 148, 136, 0.10);
}

.vd-microscope-hero {
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(220px, 0.7fr);
    gap: 12px;
    align-items: stretch;
}

.vd-microscope-title {
    font-size: 1.35rem;
    font-weight: 900;
    color: #0f172a;
    line-height: 1.2;
}

.vd-microscope-copy {
    margin-top: 6px;
    color: var(--tr-gray-700);
    line-height: 1.65;
}

.vd-microscope-verdict {
    border: 1px solid var(--tr-gray-200);
    border-left: 5px solid #3b82f6;
    border-radius: 14px;
    background: #f8fafc;
    padding: 12px;
}

.vd-microscope-verdict.success {
    border-left-color: #10b981;
    background: #f0fdf4;
}

.vd-microscope-verdict.warning {
    border-left-color: #f59e0b;
    background: #fffbeb;
}

.vd-microscope-verdict.danger {
    border-left-color: #ef4444;
    background: #fff1f2;
}

.vd-microscope-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}

.vd-visual-card {
    border: 1px solid var(--tr-gray-200);
    border-radius: 16px;
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    padding: 14px;
    min-width: 0;
}

.vd-visual-card.wide {
    grid-column: span 2;
}

.vd-visual-card-head {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    align-items: flex-start;
    margin-bottom: 10px;
}

.vd-visual-title {
    font-weight: 900;
    color: #0f172a;
}

.vd-visual-subtitle {
    margin-top: 3px;
    color: var(--tr-gray-500);
    font-size: 0.82rem;
    line-height: 1.45;
}

.vd-visual-chart {
    height: 280px;
    width: 100%;
}

.vd-visual-chart.compact {
    height: 230px;
}

.vd-visual-metric-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 4px 8px 0 0;
    padding: 4px 8px;
    border-radius: 999px;
    background: #f1f5f9;
    color: #475569;
    font-size: 0.78rem;
    font-weight: 700;
}

.vd-visual-metric-chip span {
    width: 9px;
    height: 9px;
    border-radius: 999px;
    background: var(--vd-metric-color, #64748b);
}

.vd-business-visual-list,
.vd-waterfall-visual,
.vd-peer-visual-list {
    display: grid;
    gap: 10px;
}

.vd-business-visual-row,
.vd-waterfall-row,
.vd-peer-visual-row {
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    background: #fff;
    padding: 10px;
}

.vd-business-visual-row.success {
    border-color: #bbf7d0;
    background: #f0fdf4;
}

.vd-business-visual-row.warning {
    border-color: #fde68a;
    background: #fffbeb;
}

.vd-structure-bar,
.vd-waterfall-track,
.vd-percentile-rail {
    height: 10px;
    border-radius: 999px;
    background: #e2e8f0;
    overflow: hidden;
    margin-top: 7px;
}

.vd-structure-bar span,
.vd-waterfall-track span,
.vd-percentile-rail span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #0f766e 0%, #34d399 100%);
}

.vd-business-visual-row.warning .vd-structure-bar span {
    background: linear-gradient(90deg, #d97706 0%, #fbbf24 100%);
}

.vd-business-visual-row.danger .vd-structure-bar span {
    background: linear-gradient(90deg, #dc2626 0%, #fb7185 100%);
}

.vd-structure-meta {
    margin-top: 5px;
    color: #64748b;
    font-size: 0.78rem;
}

.vd-waterfall-row-head,
.vd-peer-visual-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    font-weight: 800;
}

.vd-waterfall-row.success .vd-waterfall-track span,
.vd-peer-visual-row.success .vd-percentile-rail span {
    background: linear-gradient(90deg, #34d399 0%, #059669 100%);
}

.vd-waterfall-row.danger .vd-waterfall-track span,
.vd-peer-visual-row.warning .vd-percentile-rail span,
.vd-peer-visual-row.danger .vd-percentile-rail span {
    background: linear-gradient(90deg, #f97316 0%, #dc2626 100%);
}

.vd-capital-layer-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
}

.vd-capital-layer {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #fff;
    padding: 8px 10px;
    font-size: 0.82rem;
}

.vd-capital-layer.success {
    border-color: #bbf7d0;
    background: #f0fdf4;
}

.vd-capital-layer.warning {
    border-color: #fde68a;
    background: #fffbeb;
}

.vd-capital-layer.danger {
    border-color: #fecaca;
    background: #fff1f2;
}

.vd-deep-summary-grid {
    display: grid;
    grid-template-columns: minmax(260px, 1.2fr) repeat(3, minmax(180px, 1fr));
    gap: 12px;
}

.vd-deep-hero-grid {
    display: grid;
    grid-template-columns: minmax(260px, 0.8fr) minmax(0, 1.6fr);
    gap: 12px;
}

.vd-deep-list-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}

.vd-deep-summary-main,
.vd-deep-summary-list,
.vd-deep-card {
    border: 1px solid var(--tr-gray-200);
    border-radius: 14px;
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    padding: 14px;
}

.vd-deep-summary-main.success,
.vd-deep-card.success {
    border-left: 5px solid #10b981;
    background: linear-gradient(180deg, #f0fdf4 0%, #ffffff 100%);
}

.vd-deep-summary-main.info,
.vd-deep-card.info {
    border-left: 5px solid #3b82f6;
}

.vd-deep-summary-main.warning,
.vd-deep-card.warning {
    border-left: 5px solid #f59e0b;
    background: linear-gradient(180deg, #fffbeb 0%, #ffffff 100%);
}

.vd-deep-summary-main.danger,
.vd-deep-card.danger {
    border-left: 5px solid #ef4444;
    background: linear-gradient(180deg, #fff1f2 0%, #ffffff 100%);
}

.vd-deep-summary-title {
    font-size: 1.45rem;
    font-weight: 900;
    color: #0f172a;
    line-height: 1.15;
}

.vd-deep-summary-copy,
.vd-deep-card-summary {
    color: var(--tr-gray-700);
    line-height: 1.65;
    margin-top: 6px;
}

.vd-deep-summary-list {
    display: grid;
    align-content: start;
    gap: 8px;
    font-size: 0.9rem;
    color: var(--tr-gray-700);
}

.vd-deep-summary-list i {
    margin-right: 5px;
}

.vd-deep-summary-list.success i {
    color: #059669;
}

.vd-deep-summary-list.warning i {
    color: #d97706;
}

.vd-deep-summary-list.info i {
    color: #2563eb;
}

.vd-deep-trend-panel {
    border: 1px solid #bfdbfe;
    border-radius: 14px;
    background: linear-gradient(135deg, #eff6ff 0%, #ffffff 52%, #f0fdfa 100%);
    padding: 14px;
}

.vd-trend-point-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
}

.vd-trend-point-grid.compact {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-top: 12px;
}

.vd-trend-point {
    border: 1px solid var(--tr-gray-200);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.92);
    padding: 11px;
    min-height: 112px;
}

.vd-trend-point.success {
    border-color: #86efac;
    background: #f0fdf4;
}

.vd-trend-point.warning {
    border-color: #fde68a;
    background: #fffbeb;
}

.vd-trend-point.danger {
    border-color: #fecaca;
    background: #fff1f2;
}

.vd-trend-point-value {
    margin-top: 4px;
    font-size: 1.18rem;
    line-height: 1.2;
    font-weight: 900;
    color: #0f172a;
}

.vd-trend-chip-row {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin-top: 8px;
}

.vd-trend-chip {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    padding: 3px 8px;
    font-size: 0.76rem;
    font-weight: 800;
    background: #e2e8f0;
    color: #334155;
}

.vd-trend-chip.success {
    background: #dcfce7;
    color: #047857;
}

.vd-trend-chip.warning {
    background: #fef3c7;
    color: #b45309;
}

.vd-trend-chip.danger {
    background: #fee2e2;
    color: #b91c1c;
}

.vd-change-meter-stack {
    display: grid;
    gap: 7px;
    margin-top: 9px;
}

.vd-change-meter-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    margin-bottom: 4px;
    font-size: 0.76rem;
    color: #64748b;
}

.vd-change-meter-head strong {
    font-size: 0.82rem;
    color: #334155;
}

.vd-change-meter.success .vd-change-meter-head strong {
    color: #047857;
}

.vd-change-meter.danger .vd-change-meter-head strong {
    color: #b91c1c;
}

.vd-change-meter.warning .vd-change-meter-head strong {
    color: #b45309;
}

.vd-change-meter-track {
    position: relative;
    height: 10px;
    border-radius: 999px;
    background: #e2e8f0;
    overflow: hidden;
}

.vd-change-meter.change .vd-change-meter-track::after {
    content: "";
    position: absolute;
    inset: 0 auto 0 50%;
    width: 2px;
    background: rgba(15, 23, 42, 0.35);
    transform: translateX(-1px);
    z-index: 2;
}

.vd-change-meter-track span {
    position: absolute;
    top: 0;
    height: 100%;
    width: var(--vd-change-width, 0%);
    min-width: 2px;
    border-radius: inherit;
}

.vd-change-meter.change.success .vd-change-meter-track span {
    left: 50%;
    background: linear-gradient(90deg, #34d399 0%, #059669 100%);
}

.vd-change-meter.change.danger .vd-change-meter-track span {
    right: 50%;
    background: linear-gradient(90deg, #dc2626 0%, #fb7185 100%);
}

.vd-change-meter.change.warning .vd-change-meter-track span,
.vd-change-meter.change.info .vd-change-meter-track span {
    left: 50%;
    background: linear-gradient(90deg, #94a3b8 0%, #64748b 100%);
}

.vd-change-meter.rank .vd-change-meter-track span {
    left: 0;
    background: linear-gradient(90deg, #60a5fa 0%, #2563eb 100%);
}

.vd-change-meter.rank.success .vd-change-meter-track span {
    background: linear-gradient(90deg, #34d399 0%, #059669 100%);
}

.vd-change-meter.rank.warning .vd-change-meter-track span,
.vd-change-meter.rank.danger .vd-change-meter-track span {
    background: linear-gradient(90deg, #f97316 0%, #dc2626 100%);
}

.vd-trend-point-note {
    margin-top: 8px;
    color: var(--tr-gray-600);
    font-size: 0.8rem;
    line-height: 1.45;
}

.vd-deep-inline-title {
    margin-top: 12px;
    font-size: 0.84rem;
    font-weight: 900;
    color: #475569;
}

.vd-deep-section-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}

.vd-deep-card-title {
    font-size: 1rem;
    font-weight: 900;
    color: #0f172a;
}

.vd-deep-card-title i {
    margin-right: 6px;
}

.vd-deep-indicator-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    margin-top: 12px;
}

.vd-deep-indicator {
    border: 1px solid var(--tr-gray-200);
    border-radius: 10px;
    background: #fff;
    padding: 10px;
}

.vd-deep-indicator.success {
    border-color: #bbf7d0;
    background: #f0fdf4;
}

.vd-deep-indicator.warning {
    border-color: #fde68a;
    background: #fffbeb;
}

.vd-deep-indicator.danger {
    border-color: #fecaca;
    background: #fff1f2;
}

.vd-deep-indicator-value {
    font-size: 1rem;
    font-weight: 900;
    color: #0f172a;
}

.vd-deep-indicator-note {
    margin-top: 4px;
    color: var(--tr-gray-500);
    font-size: 0.78rem;
    line-height: 1.45;
}

.vd-deep-subblock {
    border-top: 1px dashed var(--tr-gray-200);
    margin-top: 12px;
    padding-top: 12px;
}

.vd-business-ratio-row,
.vd-peer-percentile-row {
    display: grid;
    grid-template-columns: minmax(150px, 1.2fr) minmax(120px, 1fr) 62px;
    gap: 10px;
    align-items: center;
    padding: 8px 0;
    border-bottom: 1px solid #eef2f7;
}

.vd-business-ratio-row:last-child,
.vd-peer-percentile-row:last-child {
    border-bottom: 0;
}

.vd-ratio-bar {
    height: 8px;
    border-radius: 999px;
    background: #e2e8f0;
    overflow: hidden;
}

.vd-ratio-bar span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #0f766e 0%, #34d399 100%);
}

.vd-ratio-bar.warning span {
    background: linear-gradient(90deg, #d97706 0%, #fbbf24 100%);
}

.vd-ratio-bar.danger span {
    background: linear-gradient(90deg, #dc2626 0%, #fb7185 100%);
}

.vd-ratio-value {
    text-align: right;
    font-weight: 800;
    color: #0f172a;
}

.vd-deep-risk-list,
.vd-deep-watch-list {
    display: grid;
    gap: 6px;
    margin-top: 12px;
    font-size: 0.86rem;
    line-height: 1.55;
}

.vd-deep-risk-list {
    color: #92400e;
}

.vd-deep-watch-list {
    color: #1d4ed8;
}

.vd-deep-risk-list i,
.vd-deep-watch-list i {
    margin-right: 5px;
}

.vd-deep-more {
    margin-top: 12px;
}

.vd-deep-more summary {
    cursor: pointer;
    color: #2563eb;
    font-weight: 700;
}

.vd-chart-section {
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    border: 1px solid var(--tr-gray-200);
    border-radius: 10px;
    padding: 12px;
}

.vd-chart-card {
    background: #fff;
    border: 1px solid var(--tr-gray-200);
    border-radius: 10px;
    padding: 8px 10px;
}

.vd-chart-title {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--tr-gray-600);
    margin-bottom: 4px;
}

.vd-mini-chart {
    width: 100%;
    height: 180px;
}

.vd-vertical-main-chart {
    width: 100%;
    height: 320px;
}

.vd-peer-rank-chart {
    width: 100%;
    height: 300px;
}

.vd-fp-dual-chart {
    width: 100%;
    height: 320px;
}

.vd-linkage-index-chart {
    width: 100%;
    height: 300px;
}

.vd-linkage-gap-chart {
    width: 100%;
    height: 280px;
}

.vd-linkage-bar-chart {
    width: 100%;
    height: 280px;
}

.vd-linkage-ring-chart {
    width: 100%;
    height: 280px;
}

.vd-price1y-line-chart {
    width: 100%;
    height: 280px;
}

.vd-price1y-volume-chart {
    width: 100%;
    height: 180px;
}

.vd-sticky-side {
    position: sticky;
    top: 12px;
}

.vd-note-form .form-label-sm {
    font-size: 0.75rem;
    color: var(--tr-gray-700);
    margin-bottom: 4px;
}

.vd-timeline-row td {
    vertical-align: top;
}

.vd-trend-decision-card .card-body {
    padding: 14px 16px 16px;
}

.vd-trend-judgement-grid {
    display: grid;
    grid-template-columns: 1.25fr 0.95fr 0.95fr;
    gap: 12px;
}

.vd-trend-stage-card {
    border: 1px solid var(--tr-gray-200);
    border-left: 5px solid #3b82f6;
    border-radius: 12px;
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    padding: 14px 16px;
}

.vd-trend-stage-card.success {
    border-left-color: #10b981;
    background: linear-gradient(180deg, #f0fdf4 0%, #ecfdf5 100%);
}

.vd-trend-stage-card.warning {
    border-left-color: #f59e0b;
    background: linear-gradient(180deg, #fffaf0 0%, #fffbeb 100%);
}

.vd-trend-stage-card.danger {
    border-left-color: #ef4444;
    background: linear-gradient(180deg, #fff5f5 0%, #fef2f2 100%);
}

.vd-trend-headline {
    font-size: 1.45rem;
    font-weight: 800;
    color: #0f172a;
    line-height: 1.2;
}

.vd-trend-summary {
    margin-top: 8px;
    color: var(--tr-gray-700);
    line-height: 1.7;
}

.vd-trend-reason-stack {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.vd-trend-reason-card {
    border: 1px solid var(--tr-gray-200);
    border-radius: 12px;
    background: #fff;
    padding: 10px 12px;
}

.vd-trend-reason-card.success {
    border-color: #86efac;
    background: #f0fdf4;
}

.vd-trend-reason-card.warning {
    border-color: #fcd34d;
    background: #fffbeb;
}

.vd-trend-reason-card.danger {
    border-color: #fca5a5;
    background: #fff1f2;
}

.vd-trend-reason-value {
    font-size: 1.02rem;
    font-weight: 800;
    color: #0f172a;
    line-height: 1.25;
}

.vd-trend-next-card {
    border: 1px solid #99f6e4;
    border-radius: 12px;
    background: linear-gradient(180deg, #ecfdf5 0%, #f0fdfa 100%);
    padding: 12px 14px;
}

.vd-trend-next-card li {
    margin-bottom: 4px;
    color: var(--tr-gray-700);
}

.vd-phase-strip {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 10px;
}

.vd-phase-item {
    border: 1px solid var(--tr-gray-200);
    border-radius: 12px;
    background: #fff;
    padding: 10px 12px;
    min-height: 96px;
}

.vd-phase-item.active {
    border-color: #fcd34d;
    background: linear-gradient(180deg, #fff7ed 0%, #fffbeb 100%);
    box-shadow: inset 0 0 0 2px rgba(245, 158, 11, 0.12);
}

.vd-axis-table {
    border: 1px solid var(--tr-gray-200);
    border-radius: 12px;
    overflow-x: auto;
    background: #fff;
}

.vd-axis-row {
    display: grid;
    grid-template-columns: 142px repeat(6, minmax(96px, 1fr));
    gap: 0;
    border-top: 1px solid var(--tr-gray-200);
}

.vd-axis-row:first-child {
    border-top: none;
}

.vd-axis-row > div {
    padding: 10px;
    border-left: 1px solid var(--tr-gray-200);
}

.vd-axis-row > div:first-child {
    border-left: none;
}

.vd-axis-head {
    background: #f8fafc;
    color: var(--tr-gray-500);
    font-size: 0.78rem;
    font-weight: 700;
}

.vd-axis-name {
    font-weight: 800;
    color: #0f172a;
}

.vd-axis-name small {
    display: block;
    margin-top: 3px;
    color: var(--tr-gray-500);
    font-weight: 500;
}

.vd-axis-cell {
    min-height: 56px;
    font-size: 0.82rem;
    line-height: 1.45;
    color: var(--tr-gray-700);
}

.vd-axis-cell.success {
    background: #ecfdf5;
    color: #047857;
}

.vd-axis-cell.warning {
    background: #fffbeb;
    color: #92400e;
}

.vd-axis-cell.danger {
    background: #fff1f2;
    color: #b91c1c;
}

.vd-axis-cell.info {
    background: #eff6ff;
    color: #1d4ed8;
}

.vd-axis-cell.muted {
    color: #94a3b8;
    background: #fbfdff;
}

.vd-heatmap {
    display: grid;
    grid-template-columns: minmax(82px, 1.1fr) repeat(var(--vd-heatmap-data-cols, 4), minmax(72px, 1fr));
    gap: 8px;
    align-items: stretch;
}

.vd-financial-trend-summary {
    border: 1px solid var(--tr-gray-200);
    border-left: 5px solid #f59e0b;
    border-radius: 12px;
    background: #fffbeb;
    padding: 12px 14px;
    margin-bottom: 14px;
}

.vd-financial-trend-summary.success {
    border-color: #86efac;
    border-left-color: #10b981;
    background: #ecfdf5;
}

.vd-financial-trend-summary.warning {
    border-color: #fcd34d;
    border-left-color: #f59e0b;
    background: #fffbeb;
}

.vd-financial-trend-summary.danger {
    border-color: #fca5a5;
    border-left-color: #ef4444;
    background: #fff1f2;
}

.vd-financial-trend-title {
    font-size: 1.05rem;
    font-weight: 800;
    color: #0f172a;
}

.vd-financial-trend-detail {
    margin-top: 4px;
    color: var(--tr-gray-700);
    line-height: 1.6;
}

.vd-heat-label {
    display: flex;
    align-items: center;
    color: var(--tr-gray-700);
    font-size: 0.82rem;
    font-weight: 700;
}

.vd-heat-cell {
    min-height: 40px;
    border: 1px solid var(--tr-gray-200);
    border-radius: 9px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.82rem;
    font-weight: 800;
    color: var(--tr-gray-700);
    background: #f8fafc;
}

.vd-heat-cell.success {
    border-color: #86efac;
    background: #dcfce7;
    color: #047857;
}

.vd-heat-cell.warning {
    border-color: #fcd34d;
    background: #fef3c7;
    color: #92400e;
}

.vd-heat-cell.danger {
    border-color: #fca5a5;
    background: #fee2e2;
    color: #b91c1c;
}

.vd-flow-verify-list {
    display: grid;
    gap: 10px;
}

.vd-flow-verify-row {
    display: grid;
    grid-template-columns: 120px 1fr 88px;
    align-items: center;
    gap: 10px;
}

.vd-flow-track {
    height: 10px;
    border-radius: 999px;
    background: #eef2f7;
    overflow: hidden;
}

.vd-flow-track span {
    display: block;
    height: 100%;
    width: 55%;
    border-radius: 999px;
    background: #94a3b8;
}

.vd-flow-track span.success {
    width: 72%;
    background: linear-gradient(90deg, #86efac 0%, #10b981 100%);
}

.vd-flow-track span.warning {
    width: 52%;
    background: linear-gradient(90deg, #fcd34d 0%, #f59e0b 100%);
}

.vd-flow-track span.danger {
    width: 76%;
    background: linear-gradient(90deg, #fca5a5 0%, #ef4444 100%);
}

.vd-flow-track span.info {
    width: 58%;
    background: linear-gradient(90deg, #93c5fd 0%, #2563eb 100%);
}

.vd-flow-value {
    text-align: right;
    font-size: 0.86rem;
    font-weight: 800;
    color: var(--tr-gray-700);
}

.vd-flow-value.success {
    color: #047857;
}

.vd-flow-value.warning {
    color: #b45309;
}

.vd-flow-value.danger {
    color: #b91c1c;
}

.vd-flow-value.info {
    color: #1d4ed8;
}

.vd-linkage-card {
    background: #fff;
    border: 1px solid var(--tr-gray-200);
    border-radius: 10px;
    padding: 10px 12px;
}

.vd-linkage-card .vd-linkage-main {
    font-size: 1.2rem;
    font-weight: 700;
    line-height: 1.2;
}

.vd-linkage-card.success {
    border-color: #86efac;
    background: linear-gradient(180deg, #f0fdf4 0%, #ecfdf5 100%);
}

.vd-linkage-card.warning {
    border-color: #fcd34d;
    background: linear-gradient(180deg, #fffbeb 0%, #fefce8 100%);
}

.vd-linkage-card.danger {
    border-color: #fca5a5;
    background: linear-gradient(180deg, #fff1f2 0%, #fef2f2 100%);
}

.vd-linkage-card.info {
    border-color: #bfdbfe;
    background: linear-gradient(180deg, #eff6ff 0%, #f8fafc 100%);
}

.vd-linkage-row-success td {
    background: #f0fdf4;
}

.vd-linkage-row-warning td {
    background: #fffbeb;
}

.vd-linkage-row-danger td {
    background: #fff1f2;
}

.vd-event-row-warning td {
    background: linear-gradient(180deg, #fffaf0 0%, #fffbeb 100%);
}

.vd-event-row-danger td {
    background: linear-gradient(180deg, #fff5f5 0%, #fef2f2 100%);
}

.vd-event-row-warning td:first-child,
.vd-event-row-danger td:first-child {
    border-left: 3px solid #f59e0b;
}

.vd-event-row-danger td:first-child {
    border-left-color: #ef4444;
}

@media (max-width: 1199px) {
    .vd-sticky-side {
        position: static;
    }
    .vd-trend-judgement-grid {
        grid-template-columns: 1fr;
    }
    .vd-phase-strip {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .vd-axis-row {
        min-width: 900px;
    }
    .vd-deep-summary-grid,
    .vd-deep-hero-grid,
    .vd-deep-list-grid,
    .vd-trend-point-grid,
    .vd-deep-section-grid {
        grid-template-columns: 1fr 1fr;
    }
    .vd-microscope-hero {
        grid-template-columns: 1fr;
    }
    .vd-microscope-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .vd-visual-card.wide {
        grid-column: span 2;
    }
}

@media (max-width: 767px) {
    .vd-trend-reason-stack,
    .vd-phase-strip {
        grid-template-columns: 1fr;
    }
    .vd-flow-verify-row {
        grid-template-columns: 1fr;
        align-items: start;
    }
    .vd-flow-value {
        text-align: left;
    }
    .vd-deep-summary-grid,
    .vd-deep-hero-grid,
    .vd-deep-list-grid,
    .vd-trend-point-grid,
    .vd-trend-point-grid.compact,
    .vd-deep-section-grid,
    .vd-deep-indicator-grid,
    .vd-microscope-grid,
    .vd-capital-layer-list {
        grid-template-columns: 1fr;
    }
    .vd-visual-card.wide {
        grid-column: span 1;
    }
    .vd-visual-card-head {
        flex-direction: column;
    }
    .vd-visual-chart,
    .vd-visual-chart.compact {
        height: 240px;
    }
    .vd-business-ratio-row,
    .vd-peer-percentile-row {
        grid-template-columns: 1fr;
        gap: 6px;
    }
    .vd-ratio-value {
        text-align: left;
    }
    .vd-heatmap {
        min-width: 420px;
    }
    .vd-change-grid {
        grid-template-columns: 1fr;
    }
    .vd-mini-chart {
        height: 160px;
    }
    .vd-vertical-main-chart {
        height: 260px;
    }
    .vd-peer-rank-chart,
    .vd-fp-dual-chart {
        height: 260px;
    }
    .vd-linkage-index-chart,
    .vd-linkage-gap-chart {
        height: 240px;
    }
    .vd-linkage-bar-chart,
    .vd-linkage-ring-chart {
        height: 240px;
    }
    .vd-price1y-line-chart {
        height: 220px;
    }
    .vd-price1y-volume-chart {
        height: 160px;
    }
}


/* ============================================================
   Value Discovery 详情页 V2 — 新增组件样式
   ============================================================ */

/* ── 综合结论交通灯 ─────────────────────────────────────── */
.vd2-verdict-bar {
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(0,0,0,.06);
    border: 1px solid #e2e8f0;
    padding: 16px 20px;
    margin-bottom: 20px;
    display: grid;
    grid-template-columns: 1fr 1px 1fr 1px 1fr 1px 2fr;
    align-items: center;
    gap: 0;
}
.vd2-verdict-dim { padding: 0 20px; display: flex; flex-direction: column; gap: 5px; }
.vd2-verdict-dim:first-child { padding-left: 0; }
.vd2-verdict-dim-label { font-size: 11px; color: #64748b; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.vd2-verdict-dim-row { display: flex; align-items: center; gap: 8px; }
.vd2-traffic-dot { width: 13px; height: 13px; border-radius: 50%; flex-shrink: 0; }
.vd2-traffic-dot.green { background: #10b981; box-shadow: 0 0 0 3px rgba(16,185,129,.2); }
.vd2-traffic-dot.amber { background: #f59e0b; box-shadow: 0 0 0 3px rgba(245,158,11,.2); }
.vd2-traffic-dot.red   { background: #ef4444; box-shadow: 0 0 0 3px rgba(239,68,68,.2); }
.vd2-verdict-dim-value { font-size: 14px; font-weight: 800; }
.vd2-verdict-dim-note  { font-size: 11.5px; color: #64748b; }
.vd2-verdict-sep { width: 1px; background: #e2e8f0; height: 48px; }
.vd2-verdict-conclusion { padding-left: 20px; }
.vd2-verdict-tag {
    display: inline-flex; align-items: center; gap: 6px;
    border-radius: 20px; padding: 4px 12px; font-size: 12px; font-weight: 700;
    margin-bottom: 6px;
}
.vd2-verdict-tag.success { background: #d1fae5; color: #047857; }
.vd2-verdict-tag.warning { background: #fde68a; color: #92400e; }
.vd2-verdict-tag.danger  { background: #fecaca; color: #991b1b; }
.vd2-verdict-tag.info    { background: #dbeafe; color: #1e40af; }
.vd2-verdict-sentence { font-size: 13px; line-height: 1.65; color: #374151; }

/* ── 分段标题 ────────────────────────────────────────────── */
.vd2-section-header {
    display: flex; align-items: center; gap: 12px;
    margin: 28px 0 14px;
}
.vd2-section-num {
    width: 30px; height: 30px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-weight: 900; font-size: 14px; flex-shrink: 0;
}
.vd2-section-num.s1 { background: #dbeafe; color: #1d4ed8; }
.vd2-section-num.s2 { background: #d1fae5; color: #047857; }
.vd2-section-num.s3 { background: #ede9fe; color: #7c3aed; }
.vd2-section-num.s4 { background: #fde68a; color: #b45309; }
.vd2-section-title { font-size: 17px; font-weight: 900; color: #0f172a; }
.vd2-section-sub { font-size: 13px; color: #64748b; margin-left: 4px; }
.vd2-section-divider { flex: 1; height: 1px; background: #e2e8f0; }

/* ── 财报四维健康扫描 ────────────────────────────────────── */
.vd2-health-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
}
.vd2-health-col {
    padding: 16px;
    border-right: 1px solid #f1f5f9;
}
.vd2-health-col:last-child { border-right: none; }
.vd2-health-col-title {
    font-size: 11.5px; font-weight: 700; color: #64748b;
    text-transform: uppercase; letter-spacing: .04em;
    margin-bottom: 12px; padding-bottom: 8px;
    border-bottom: 2px solid #e2e8f0;
}
.vd2-health-metric { margin-bottom: 12px; }
.vd2-health-metric:last-child { margin-bottom: 0; }
.vd2-health-metric-label { font-size: 11px; color: #94a3b8; margin-bottom: 3px; }
.vd2-health-metric-row { display: flex; align-items: baseline; gap: 8px; }
.vd2-health-metric-value { font-size: 18px; font-weight: 800; line-height: 1.2; }
.vd2-health-metric-value.up   { color: #047857; }
.vd2-health-metric-value.down { color: #b91c1c; }
.vd2-health-metric-value.flat { color: #475569; }
.vd2-health-metric-note { font-size: 11.5px; color: #64748b; margin-top: 2px; }
.vd2-streak { display: inline-flex; align-items: center; gap: 3px; font-size: 11px; font-weight: 700; padding: 2px 7px; border-radius: 20px; white-space: nowrap; }
.vd2-streak.up   { background: #d1fae5; color: #047857; }
.vd2-streak.down { background: #fecaca; color: #991b1b; }
.vd2-streak.flat { background: #e2e8f0; color: #475569; }

/* ── 资金三层共振 ────────────────────────────────────────── */
.vd2-resonance-grid {
    display: grid;
    grid-template-columns: 1fr 28px 1fr 28px 1fr;
    align-items: center; gap: 0;
}
.vd2-resonance-arrow { display: flex; align-items: center; justify-content: center; color: #94a3b8; font-size: 18px; }
.vd2-resonance-cell {
    border: 1px solid #e2e8f0; border-radius: 10px; padding: 14px 16px; background: #fff;
}
.vd2-resonance-cell.ok-green  { border-color: #6ee7b7; background: #ecfdf5; }
.vd2-resonance-cell.ok-amber  { border-color: #fde68a; background: #fffbeb; }
.vd2-resonance-cell.ok-red    { border-color: #fca5a5; background: #fef2f2; }
.vd2-resonance-layer  { font-size: 10.5px; color: #64748b; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; margin-bottom: 5px; }
.vd2-resonance-name   { font-size: 14px; font-weight: 800; color: #0f172a; margin-bottom: 6px; }
.vd2-resonance-value  { font-size: 20px; font-weight: 900; }
.vd2-resonance-value.up   { color: #047857; }
.vd2-resonance-value.down { color: #b91c1c; }
.vd2-resonance-meta   { font-size: 11.5px; color: #64748b; margin-top: 5px; display: flex; flex-direction: column; gap: 2px; }
.vd2-resonance-conclusion {
    margin-top: 12px; display: flex; align-items: flex-start; gap: 10px;
    padding: 10px 14px; background: #ecfdf5; border: 1px solid #6ee7b7;
    border-radius: 8px; font-size: 13px; color: #047857; font-weight: 500;
}
.vd2-resonance-conclusion.warn { background: #fffbeb; border-color: #fde68a; color: #b45309; }
.vd2-resonance-conclusion.danger { background: #fef2f2; border-color: #fca5a5; color: #b91c1c; }

/* ── 超大单拆分格 ────────────────────────────────────────── */
.vd2-breakdown-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.vd2-breakdown-cell { border: 1px solid #e2e8f0; border-radius: 8px; padding: 12px; text-align: center; }
.vd2-breakdown-cell.superb { border-color: #bfdbfe; background: #eff6ff; }
.vd2-breakdown-cell.largeb { border-color: #bbf7d0; background: #ecfdf5; }
.vd2-breakdown-cell.retailb { border-color: #e2e8f0; background: #f8fafc; }
.vd2-breakdown-label { font-size: 11px; color: #64748b; margin-bottom: 6px; }
.vd2-breakdown-value { font-size: 18px; font-weight: 900; }
.vd2-breakdown-value.up   { color: #047857; }
.vd2-breakdown-value.down { color: #b91c1c; }
.vd2-breakdown-sub  { font-size: 11px; color: #94a3b8; margin-top: 4px; }
.vd2-dot-strip { display: flex; gap: 3px; justify-content: center; margin-top: 8px; flex-wrap: wrap; }
.vd2-dot { width: 9px; height: 9px; border-radius: 50%; }
.vd2-dot.in  { background: #10b981; }
.vd2-dot.out { background: #fca5a5; }
.vd2-dot.na  { background: #e2e8f0; }

/* ── 龙虎榜表格 ──────────────────────────────────────────── */
.vd2-dt-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.vd2-dt-table th { color: #64748b; font-weight: 600; font-size: 11px; border-bottom: 1px solid #e2e8f0; padding: 7px 8px; text-align: left; background: #f8fafc; }
.vd2-dt-table td { padding: 9px 8px; border-bottom: 1px solid #f1f5f9; vertical-align: middle; }
.vd2-dt-table tr:last-child td { border-bottom: none; }
.vd2-dt-table tr:hover td { background: #f8fafc; }
.vd2-dt-net.up   { color: #047857; font-weight: 700; }
.vd2-dt-net.down { color: #b91c1c; font-weight: 700; }
.vd2-dt-tag { display: inline-flex; align-items: center; gap: 3px; padding: 2px 8px; border-radius: 20px; font-size: 11px; font-weight: 600; }
.vd2-dt-tag.limit { background: #d1fae5; color: #047857; }
.vd2-dt-tag.rise  { background: #fef3c7; color: #92400e; }
.vd2-dt-tag.fall  { background: #fee2e2; color: #991b1b; }
.vd2-dt-ratio-bar { display: flex; align-items: center; gap: 6px; }
.vd2-dt-ratio-track { flex: 0 0 48px; height: 5px; background: #e2e8f0; border-radius: 99px; overflow: hidden; }
.vd2-dt-ratio-fill { height: 100%; background: #3b82f6; border-radius: 99px; }

/* ── 进场时机信号卡 ──────────────────────────────────────── */
.vd2-timing-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 12px; }
.vd2-timing-cell { border: 1px solid #e2e8f0; border-radius: 8px; padding: 10px 12px; }
.vd2-timing-cell.ok   { border-color: #bbf7d0; background: #ecfdf5; }
.vd2-timing-cell.warn { border-color: #fde68a; background: #fffbeb; }
.vd2-timing-cell.bad  { border-color: #fecaca; background: #fef2f2; }
.vd2-timing-label { font-size: 11px; color: #64748b; margin-bottom: 4px; }
.vd2-timing-value { font-size: 14px; font-weight: 800; }
.vd2-timing-note  { font-size: 11px; color: #64748b; margin-top: 3px; }

/* ── 研报列表 ────────────────────────────────────────────── */
.vd2-report-item { border: 1px solid #e2e8f0; border-radius: 10px; padding: 13px 15px; background: #fff; position: relative; margin-bottom: 8px; }
.vd2-report-item:last-child { margin-bottom: 0; }
.vd2-report-item.upgrade  { border-color: #fde68a; background: #fffdf0; }
.vd2-report-item.initiate { border-color: #bfdbfe; background: #f0f7ff; }
.vd2-report-item.downgrade { border-color: #fecaca; background: #fff5f5; }
.vd2-report-signal-tag { position: absolute; top: 10px; right: 10px; font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 20px; }
.vd2-report-signal-tag.upgrade  { background: #fef3c7; color: #92400e; }
.vd2-report-signal-tag.initiate { background: #dbeafe; color: #1e40af; }
.vd2-report-signal-tag.downgrade { background: #fee2e2; color: #991b1b; }
.vd2-report-org  { font-size: 13.5px; font-weight: 800; }
.vd2-report-date { font-size: 11px; color: #64748b; }
.vd2-report-title { font-size: 12.5px; color: #374151; margin-top: 5px; }
.vd2-report-meta  { display: flex; align-items: center; gap: 10px; margin-top: 9px; flex-wrap: wrap; }
.vd2-rating-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 700; padding: 3px 10px; border-radius: 20px; }
.vd2-rating-badge.buy   { background: #d1fae5; color: #047857; }
.vd2-rating-badge.hold  { background: #e2e8f0; color: #475569; }
.vd2-rating-badge.sell  { background: #fee2e2; color: #991b1b; }
.vd2-report-tp     { font-size: 13px; font-weight: 700; }
.vd2-report-upside { font-size: 12px; font-weight: 700; color: #047857; }
.vd2-report-upside.neg { color: #b91c1c; }

/* ── 评级分布条 ──────────────────────────────────────────── */
.vd2-rating-dist { display: flex; flex-direction: column; gap: 7px; }
.vd2-rating-dist-row { display: flex; align-items: center; gap: 8px; }
.vd2-rating-dist-label { font-size: 12px; font-weight: 600; width: 32px; }
.vd2-rating-dist-bar { flex: 1; height: 16px; background: #e2e8f0; border-radius: 4px; overflow: hidden; }
.vd2-rating-dist-fill { height: 100%; border-radius: 4px; }
.vd2-rating-dist-fill.buy   { background: #10b981; }
.vd2-rating-dist-fill.hold  { background: #94a3b8; }
.vd2-rating-dist-fill.sell  { background: #ef4444; }
.vd2-rating-dist-count { font-size: 13px; font-weight: 800; width: 24px; text-align: right; }

/* ── 目标价共识 ──────────────────────────────────────────── */
.vd2-tp-panel { border: 1px solid #6ee7b7; border-radius: 10px; padding: 16px; background: #ecfdf5; }
.vd2-tp-headline { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.vd2-tp-current-val { font-size: 20px; font-weight: 900; color: #0f172a; }
.vd2-tp-arrow { font-size: 16px; color: #94a3b8; }
.vd2-tp-target-val { font-size: 20px; font-weight: 900; color: #047857; }
.vd2-tp-upside-pill { background: #047857; color: #fff; border-radius: 20px; padding: 3px 12px; font-size: 13px; font-weight: 700; }
.vd2-tp-track { height: 10px; background: #e2e8f0; border-radius: 99px; overflow: hidden; position: relative; margin: 12px 0 4px; }
.vd2-tp-fill-target { position: absolute; top: 0; left: 0; height: 100%; border-radius: 99px; background: rgba(16,185,129,.3); }
.vd2-tp-fill-current { position: absolute; top: 0; left: 0; height: 100%; border-radius: 99px; background: #94a3b8; }
.vd2-tp-labels { display: flex; justify-content: space-between; font-size: 11px; color: #64748b; }
.vd2-tp-orgs { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; }

/* ── 估值分位条 ──────────────────────────────────────────── */
.vd2-val-pct-bar { height: 6px; background: #e2e8f0; border-radius: 99px; overflow: hidden; margin-top: 6px; }
.vd2-val-pct-fill { height: 100%; background: linear-gradient(90deg, #34d399 0%, #1d4ed8 100%); border-radius: 99px; }

/* ── 图表容器 ────────────────────────────────────────────── */
.vd2-chart-fin-trend   { height: 260px; width: 100%; }
.vd2-chart-capital-daily { height: 200px; width: 100%; }
.vd2-chart-rank-trend  { height: 140px; width: 100%; }
.vd2-chart-timeline    { height: 280px; width: 100%; }
.vd2-chart-price-timing { height: 240px; width: 100%; }
.vd2-chart-pe-gauge    { height: 160px; width: 100%; }
.vd2-chart-ranking-bar { height: 220px; width: 100%; }
.vd2-chart-eps-revision { height: 80px; width: 100%; }

/* ── 响应式 ──────────────────────────────────────────────── */
@media (max-width: 1100px) {
    .vd2-verdict-bar { grid-template-columns: 1fr; gap: 12px; }
    .vd2-verdict-sep { display: none; }
    .vd2-verdict-dim { padding: 0; }
    .vd2-verdict-conclusion { padding-left: 0; }
    .vd2-health-grid { grid-template-columns: 1fr 1fr; }
    .vd2-resonance-grid { grid-template-columns: 1fr; }
    .vd2-resonance-arrow { display: none; }
    .vd2-breakdown-grid { grid-template-columns: 1fr; }
    .vd2-timing-grid { grid-template-columns: 1fr; }
}
