/* 共振信号作战板 · 视觉对齐 p8m 题材页：墨蓝作战板 + 琥珀主色 + A股涨红；沿用 shared.css 令牌 */

body[data-page="confluence"] {
    --ink-900: #0b1220;
    --ink-800: #101b30;
    --ink-700: #16233c;
    --ink-600: #1f2f4d;
    --amber: #f59e0b;
    --amber-soft: #fbbf24;
    --amber-deep: #b45309;
    --flame: #f97316;
    --up: #dc2626;
    --pass: #10b981;
    --info: #38bdf8;
    --nav-h: 52px;
    background:
        radial-gradient(1200px 500px at 85% -10%, rgba(249, 115, 22, .06), transparent 60%),
        radial-gradient(900px 420px at -10% 30%, rgba(56, 189, 248, .05), transparent 55%),
        var(--bg);
    scrollbar-width: thin; scrollbar-color: var(--ink-600) var(--line-2);
}
body[data-page="confluence"] .top-navbar { position: sticky; top: 0; }
body[data-page="confluence"]::-webkit-scrollbar,
body[data-page="confluence"] .cf-rail::-webkit-scrollbar,
body[data-page="confluence"] .cf-dag-scroll::-webkit-scrollbar,
body[data-page="confluence"] .cf-modal-body::-webkit-scrollbar { width: 8px; height: 8px; }
body[data-page="confluence"]::-webkit-scrollbar-track,
body[data-page="confluence"] .cf-rail::-webkit-scrollbar-track,
body[data-page="confluence"] .cf-dag-scroll::-webkit-scrollbar-track,
body[data-page="confluence"] .cf-modal-body::-webkit-scrollbar-track { background: var(--line-2); }
body[data-page="confluence"]::-webkit-scrollbar-thumb,
body[data-page="confluence"] .cf-rail::-webkit-scrollbar-thumb,
body[data-page="confluence"] .cf-dag-scroll::-webkit-scrollbar-thumb,
body[data-page="confluence"] .cf-modal-body::-webkit-scrollbar-thumb { background: var(--ink-600); border-radius: 4px; }
body[data-page="confluence"]::-webkit-scrollbar-thumb:hover,
body[data-page="confluence"] .cf-rail::-webkit-scrollbar-thumb:hover,
body[data-page="confluence"] .cf-dag-scroll::-webkit-scrollbar-thumb:hover,
body[data-page="confluence"] .cf-modal-body::-webkit-scrollbar-thumb:hover { background: var(--amber-deep); }

.cf-shell { max-width: 1240px; margin: 0 auto; padding: 0 20px 48px; }

/* ============ Hero ============ */
.cf-hero {
    position: relative; margin: 18px 0 0; border-radius: 16px; overflow: hidden;
    color: #e7edf7;
    background: linear-gradient(135deg, var(--ink-900) 0%, var(--ink-800) 45%, #1a2742 78%, #232f4b 100%);
    border: 1px solid rgba(148, 163, 184, .18);
    box-shadow: 0 24px 48px rgba(11, 18, 32, .28);
}
.cf-hero::before {
    content: ""; position: absolute; inset: 0;
    background-image:
        linear-gradient(rgba(148, 163, 184, .07) 1px, transparent 1px),
        linear-gradient(90deg, rgba(148, 163, 184, .07) 1px, transparent 1px);
    background-size: 34px 34px;
    mask-image: radial-gradient(720px 340px at 70% 0%, #000 30%, transparent 75%);
    pointer-events: none;
}
.cf-hero-glow {
    position: absolute; width: 560px; height: 560px; right: -140px; top: -260px;
    background: radial-gradient(circle, rgba(245, 158, 11, .30), rgba(249, 115, 22, .10) 45%, transparent 70%);
    filter: blur(6px);
    animation: cfDrift 14s ease-in-out infinite alternate;
    pointer-events: none;
}
.cf-hero-glow.cool {
    width: 420px; height: 420px; left: -160px; top: auto; bottom: -240px; right: auto;
    background: radial-gradient(circle, rgba(56, 189, 248, .20), transparent 68%);
    animation-duration: 18s; animation-delay: -6s;
}
@keyframes cfDrift {
    from { transform: translate3d(0, 0, 0) scale(1); }
    to { transform: translate3d(-46px, 30px, 0) scale(1.12); }
}
.cf-hero-in { position: relative; padding: 26px 30px 22px; }
.cf-hero-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.cf-eyebrow {
    display: inline-flex; align-items: center; gap: 8px;
    font-size: 10px; font-weight: 700; letter-spacing: .22em;
    color: var(--amber-soft); text-transform: uppercase;
}
.cf-eyebrow::before { content: ""; width: 22px; height: 2px; background: linear-gradient(90deg, var(--amber), transparent); }
.cf-title { margin: 8px 0 6px; font-size: clamp(26px, 4vw, 40px); font-weight: 800; letter-spacing: .01em; color: #f8fafc; }
.cf-title em { font-style: normal; background: linear-gradient(100deg, var(--amber-soft), var(--flame)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.cf-sub { font-size: 12.5px; color: #9fb0c8; max-width: 640px; line-height: 1.8; }
.cf-caliber-pill {
    display: inline-flex; align-items: center; gap: 6px; margin-top: 12px;
    font-size: 11px; font-weight: 700; color: var(--amber-soft);
    border: 1px solid rgba(245, 158, 11, .5); border-radius: 999px; padding: 4px 12px;
    background: rgba(245, 158, 11, .10);
}
.cf-caliber-pill svg { width: 12px; height: 12px; }
.cf-hero-date { text-align: right; flex: none; }
.cf-hero-date .k { font-size: 10px; letter-spacing: .18em; color: #8ea0bb; }
.cf-hero-date .v { font-size: clamp(22px, 3vw, 32px); font-weight: 800; color: #f8fafc; font-variant-numeric: tabular-nums; margin-top: 2px; }
.cf-hero-date .mode { display: inline-block; margin-top: 6px; font-size: 10px; font-weight: 700; color: var(--info); border: 1px solid rgba(56, 189, 248, .45); background: rgba(56, 189, 248, .10); border-radius: 5px; padding: 2px 8px; }

/* KPI 双窗口统计带（Hero 内） */
.cf-kpi-wrap { margin-top: 22px; cursor: pointer; border-radius: 10px; transition: box-shadow .15s ease; }
.cf-kpi-wrap:hover { box-shadow: 0 0 0 1px rgba(245, 158, 11, .45); }
.cf-stats { display: grid; grid-template-columns: repeat(6, 1fr); gap: 1px; border-radius: 10px; overflow: hidden; background: rgba(148, 163, 184, .16); border: 1px solid rgba(148, 163, 184, .16); }
.cf-stat { background: rgba(16, 27, 48, .82); padding: 12px 14px; transition: background .15s ease; }
.cf-stat:hover { background: rgba(31, 47, 77, .92); }
.cf-stat .v { font-size: 22px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--amber-soft); line-height: 1.2; }
.cf-stat.hot .v { color: #f87171; }
.cf-stat.ok .v { color: #34d399; }
.cf-stat.cool .v { color: var(--info); }
.cf-stat .k { font-size: 10.5px; color: #8ea0bb; margin-top: 3px; letter-spacing: .04em; }
.cf-kpi-foot { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-top: 10px; font-size: 11px; color: #9fb0c8; }
.cf-note-chip {
    display: inline-block; padding: 0 7px; border-radius: 5px;
    background: rgba(245, 158, 11, .14); border: 1px solid rgba(245, 158, 11, .5);
    color: var(--amber-soft); font-size: 10.5px; font-weight: 700; line-height: 1.7;
    white-space: nowrap;
}
.cf-kpi-more { color: #8ea0bb; }

/* ============ 控制 deck（sticky） ============ */
.cf-deck {
    position: sticky; top: var(--nav-h); z-index: 900;
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    margin: 14px 0; padding: 10px 14px;
    background: var(--surface);
    background: color-mix(in srgb, var(--surface) 88%, transparent);
    backdrop-filter: blur(8px);
    border: 1px solid var(--border); border-radius: 12px;
    box-shadow: 0 8px 20px rgba(31, 41, 55, .07);
}
.cf-stepper { display: inline-flex; align-items: center; gap: 6px; }
.cf-btn {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 12px; font-weight: 600; color: var(--text-2);
    background: var(--surface); border: 1px solid var(--border); border-radius: 7px;
    padding: 6px 11px; cursor: pointer;
    transition: border-color .12s, color .12s, transform .08s, box-shadow .12s;
}
.cf-btn:hover { border-color: var(--amber); color: var(--amber-deep); box-shadow: 0 2px 8px rgba(245, 158, 11, .16); }
.cf-btn:active { transform: scale(.96); }
.cf-btn svg { width: 13px; height: 13px; }
.cf-btn.primary { background: linear-gradient(120deg, var(--ink-800), var(--ink-700)); color: var(--amber-soft); border-color: var(--ink-600); }
.cf-btn.primary:hover { color: #fde68a; border-color: var(--amber); }
.cf-date-input { font-size: 12.5px; font-weight: 600; color: var(--text-1); padding: 5px 8px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); font-variant-numeric: tabular-nums; color-scheme: dark; }
[data-theme="light"] .cf-date-input { color-scheme: light; }
.cf-date-input:focus { outline: none; border-color: var(--amber); box-shadow: 0 0 0 3px rgba(245, 158, 11, .15); }
.cf-deck-sep { width: 1px; height: 22px; background: var(--line); }
.cf-window { display: inline-flex; gap: 4px; }
.cf-win-btn { font-size: 11.5px; font-weight: 600; color: var(--text-3); background: transparent; border: 1px solid transparent; border-radius: 999px; padding: 5px 11px; cursor: pointer; transition: all .12s; }
.cf-win-btn:hover { color: var(--amber-deep); background: rgba(245, 158, 11, .08); }
.cf-win-btn.active { color: var(--amber-deep); background: var(--active-bg); border-color: rgba(245, 158, 11, .5); }
.cf-date-hint { font-size: 10.5px; color: var(--text-4); }
.cf-updated { margin-left: auto; font-size: 10.5px; color: var(--text-4); white-space: nowrap; }

/* ============ 主体两栏 ============ */
.cf-grid { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 16px; align-items: start; }
.cf-main { min-width: 0; }
.cf-section { margin-bottom: 22px; }
.cf-section-hd { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 0 2px 10px; }
.cf-section-title { display: flex; align-items: center; gap: 7px; font-size: 15px; font-weight: 800; color: var(--text-1); }
.cf-section-title svg { width: 15px; height: 15px; color: var(--amber); flex: none; }
.cf-cnt { margin-left: auto; font-size: 10px; font-weight: 700; color: var(--amber-deep); background: rgba(245, 158, 11, .12); border-radius: 999px; padding: 1px 8px; }
.cf-section-sub { flex: 1 1 100%; font-size: 11px; color: var(--text-4); }

/* 筛选 pills */
.cf-filters { display: flex; flex-wrap: wrap; gap: 4px; padding: 0 2px 10px; }
.cf-filter {
    font-size: 11.5px; font-weight: 600; color: var(--text-3);
    background: transparent; border: 1px solid transparent; border-radius: 999px;
    padding: 5px 11px; cursor: pointer; user-select: none; transition: all .12s;
}
.cf-filter:hover { color: var(--amber-deep); background: rgba(245, 158, 11, .08); }
.cf-filter.active { color: var(--amber-deep); background: var(--active-bg); border-color: rgba(245, 158, 11, .5); }

/* 结论卡片 */
.cf-signals { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 12px; }
.cf-sig-card {
    background: var(--surface); border: 1px solid var(--border); border-radius: 12px;
    padding: 12px 14px; cursor: pointer; box-shadow: var(--shadow-sm);
    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
    animation: cfRise .4s ease backwards;
}
.cf-sig-card:nth-child(2) { animation-delay: .04s; }
.cf-sig-card:nth-child(3) { animation-delay: .08s; }
.cf-sig-card:nth-child(4) { animation-delay: .12s; }
.cf-sig-card:nth-child(5) { animation-delay: .16s; }
.cf-sig-card:nth-child(6) { animation-delay: .20s; }
.cf-sig-card:nth-child(7) { animation-delay: .24s; }
.cf-sig-card:nth-child(8) { animation-delay: .28s; }
.cf-sig-card:nth-child(9) { animation-delay: .32s; }
.cf-sig-card:hover { transform: translateY(-2px); box-shadow: var(--shadow); border-color: rgba(245, 158, 11, .45); }
.cf-sig-card.active { border-color: var(--amber); box-shadow: 0 0 0 2px rgba(245, 158, 11, .22); }
.cf-sig-card:active { transform: scale(.99); }
@keyframes cfRise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.cf-sig-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.cf-sig-name { font-size: 14px; font-weight: 700; color: var(--text-1); }
.cf-sig-code { font-size: 11px; color: var(--text-4); }
.cf-grade { font-size: 10.5px; font-weight: 700; padding: 1px 8px; border-radius: 5px; white-space: nowrap; }
.cf-grade.A { background: rgba(220, 38, 38, .14); color: #dc2626; }
.cf-grade.B { background: rgba(59, 130, 246, .14); color: #2563eb; }
.cf-bucket { font-size: 10.5px; font-weight: 600; color: var(--text-3); background: var(--chip-bg); border: 1px solid var(--line-2); padding: 1px 8px; border-radius: 999px; }
.cf-horizon { font-size: 10px; font-weight: 700; padding: 1px 6px; border-radius: 5px; color: var(--text-3); background: var(--chip-bg); border: 1px dashed var(--line-2); white-space: nowrap; }
.cf-res { margin-left: auto; font-size: 11px; color: var(--text-4); white-space: nowrap; }
.cf-res b { font-weight: 700; color: var(--amber-deep); font-size: 12.5px; }
.cf-sig-conclusion {
    font-size: 13px; line-height: 1.55; color: var(--text-2);
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    overflow: hidden; margin-bottom: 8px;
}
.cf-contrib { display: flex; align-items: center; gap: 8px; margin: 0 0 8px; }
.cf-contrib-bar { flex: 1; display: flex; height: 7px; border-radius: 4px; overflow: hidden; background: var(--chip-bg); }
.cf-contrib-seg { height: 100%; }
.cf-contrib-seg.base { background: var(--flame); }
.cf-contrib-seg.p8 { background: #a855f7; }
.cf-contrib-seg.cross { background: #eab308; }
.cf-contrib-seg.dual { background: #22c55e; }
.cf-contrib-seg.penalty { background: #ef4444; }
.cf-contrib-legend { font-size: 10px; color: var(--text-4); white-space: nowrap; }
.cf-contrib-none { font-size: 10px; color: var(--text-4); }
.cf-sig-badges { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.cf-p8 { font-size: 10.5px; font-weight: 600; padding: 1px 8px; border-radius: 5px; white-space: nowrap; }
.cf-p8.ok { background: rgba(34, 197, 94, .14); color: #16a34a; }
.cf-p8.none { background: var(--line-2); color: var(--text-4); }
.cf-tag { font-size: 10.5px; padding: 1px 7px; border-radius: 5px; color: var(--text-3); background: var(--chip-bg); border: 1px solid var(--line-2); white-space: nowrap; }
.cf-env-chip { font-size: 10.5px; padding: 1px 7px; border-radius: 5px; color: var(--text-4); background: rgba(107, 114, 128, .12); border: 1px dashed var(--line-2); white-space: nowrap; }
.cf-empty, .cf-error {
    grid-column: 1 / -1; background: var(--surface);
    border: 1px dashed var(--border); border-radius: 12px;
    padding: 26px 16px; text-align: center; font-size: 13px; color: var(--text-4);
}
.cf-error { color: #dc2626; }

/* ============ DAG 墨蓝作战板 ============ */
.cf-dag-legend { display: flex; flex-wrap: wrap; gap: 8px; padding: 0 2px 8px; }
.cf-lane-chip { display: flex; align-items: center; gap: 5px; font-size: 10.5px; color: var(--text-3); background: var(--chip-bg); border: 1px solid var(--line-2); border-radius: 999px; padding: 1px 9px; }
.cf-lane-dot { width: 7px; height: 7px; border-radius: 50%; flex: 0 0 auto; }
.cf-lane-dot.env { background: #6b7280; }
.cf-lane-dot.intraday { background: var(--flame); }
.cf-lane-dot.daily { background: #3b82f6; }
.cf-lane-dot.sink { background: #a855f7; }
.cf-lane-dot.weak { background: #eab308; }
.cf-lane-weak { color: #ca8a04; }
.cf-dag-nodata { margin-bottom: 10px; padding: 14px 12px; }
.cf-dag-scroll { overflow-x: auto; border-radius: 14px; }
.cf-dag {
    position: relative; aspect-ratio: 1000 / 700; min-width: 780px; overflow: hidden;
    background: linear-gradient(135deg, var(--ink-900) 0%, var(--ink-800) 45%, #1a2742 78%, #232f4b 100%);
    border: 1px solid rgba(148, 163, 184, .18); border-radius: 14px;
}
.cf-dag::before {
    content: ""; position: absolute; inset: 0;
    background-image:
        linear-gradient(rgba(148, 163, 184, .06) 1px, transparent 1px),
        linear-gradient(90deg, rgba(148, 163, 184, .06) 1px, transparent 1px);
    background-size: 34px 34px;
    mask-image: radial-gradient(80% 70% at 50% 40%, #000 30%, transparent 80%);
    pointer-events: none;
}
.cf-dag-svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.cf-dag-svg line { stroke: rgba(148, 163, 184, .5); stroke-width: 1.4; transition: opacity .12s ease; }
.cf-dag-svg line.cond { stroke-dasharray: 5 4; }
.cf-dag-svg line.dim { opacity: .16; }
.cf-dag-svg line.hl { stroke: var(--amber-soft); stroke-width: 2.4; opacity: 1; }
.cf-dag-svg line.weak { stroke: #eab308; stroke-width: 2.2; }
.cf-dag-svg line.weak.dim { opacity: .16; }
.cf-dag-svg marker path { fill: rgba(148, 163, 184, .65); }
.cf-dag-nodes { position: absolute; inset: 0; pointer-events: none; }
.cf-node {
    pointer-events: auto; position: absolute; transform: translate(-50%, -50%);
    width: 150px; background: rgba(16, 27, 48, .9);
    border: 1px solid rgba(148, 163, 184, .22); border-radius: 10px;
    padding: 7px 10px 6px; cursor: pointer; z-index: 2;
    transition: border-color .12s ease, opacity .12s ease, box-shadow .12s ease;
}
.cf-node:hover { border-color: var(--amber-soft); }
.cf-node.hl { border-color: var(--amber-soft); box-shadow: 0 0 0 2px rgba(245, 158, 11, .3); opacity: 1; }
.cf-node.dim { opacity: .35; }
.cf-node-top { display: flex; align-items: center; gap: 6px; }
.cf-node-title { font-size: 12px; font-weight: 700; color: #f8fafc; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cf-node-sub { font-size: 10px; color: #8ea0bb; margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cf-node-nums { display: flex; align-items: baseline; gap: 8px; margin-top: 3px; font-size: 10.5px; }
.cf-node-today { color: #9fb0c8; }
.cf-node-today b { color: #f8fafc; font-weight: 700; }
.cf-node-win { color: #9fb0c8; }
.cf-node-win b { font-weight: 700; }
.cf-node-win b.up { color: #f87171; }
.cf-node-win b.down { color: var(--info); }
.cf-edge-label {
    pointer-events: auto; position: absolute; transform: translate(-50%, -50%);
    display: flex; align-items: center; gap: 5px;
    background: rgba(11, 18, 32, .88); border: 1px solid rgba(148, 163, 184, .3);
    border-radius: 6px; padding: 1px 7px; font-size: 10px; color: #9fb0c8;
    cursor: pointer; white-space: nowrap; z-index: 3;
    transition: opacity .12s ease, border-color .12s ease, color .12s ease;
}
.cf-edge-label:hover { border-color: var(--amber-soft); color: #e7edf7; }
.cf-edge-label.hl { border-color: var(--amber-soft); color: var(--amber-soft); opacity: 1; }
.cf-edge-label.dim { opacity: .3; }
.cf-edge-label.weak { border-color: rgba(234, 179, 8, .65); background: rgba(234, 179, 8, .15); color: var(--amber-soft); }
.cf-edge-win { font-weight: 700; }
.cf-edge-win.up { color: #f87171; }
.cf-edge-win.down { color: var(--info); }
.cf-edge-weakbadge { font-size: 10px; font-weight: 700; margin-left: 4px; padding: 0 4px; border-radius: 4px; background: #eab308; color: #1f1300; }

/* ============ 右栏 ============ */
.cf-rail { position: sticky; top: calc(var(--nav-h) + 74px); display: flex; flex-direction: column; gap: 12px; max-height: calc(100vh - var(--nav-h) - 90px); overflow-y: auto; }
.cf-rail-card { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 13px 15px; box-shadow: var(--shadow-sm); }
.cf-rail-title { display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 800; color: var(--text-1); margin-bottom: 9px; }
.cf-rail-title svg { width: 14px; height: 14px; color: var(--amber); flex: none; }
.cf-env-hd { cursor: pointer; margin-bottom: 4px; }
.cf-env-hd:hover .cf-env-regime { text-decoration: underline dotted; }
.cf-env-more { margin-left: auto; font-size: 10.5px; font-weight: 400; color: var(--text-4); }
.cf-env-regime { font-size: 11px; font-weight: 800; padding: 1px 8px; border-radius: 999px; background: var(--chip-bg); color: var(--text-2); }
.cf-env-regime.hot { background: rgba(220, 38, 38, .14); color: #dc2626; }
.cf-env-regime.cold { background: rgba(59, 130, 246, .14); color: #2563eb; }
.cf-env-prewarn { font-size: 10px; font-weight: 700; padding: 1px 7px; border-radius: 5px; white-space: nowrap; }
.cf-env-prewarn.hot { background: rgba(220, 38, 38, .16); color: #dc2626; }
.cf-env-prewarn.cold { background: rgba(59, 130, 246, .16); color: #2563eb; }
.cf-env-date { font-size: 10.5px; color: var(--text-4); margin: 0 0 6px; }
.cf-env-bars { display: flex; flex-direction: column; gap: 6px; }
.cf-bar-group { min-width: 0; }
.cf-bar-group-title { font-size: 10.5px; color: var(--text-4); margin-bottom: 2px; }
.cf-bar-row { display: flex; align-items: center; gap: 8px; padding: 1px 0; }
.cf-bar-label { flex: 0 0 52px; font-size: 11px; color: var(--text-3); white-space: nowrap; text-align: right; }
.cf-bar-track { flex: 1; height: 7px; border-radius: 4px; background: var(--chip-bg); overflow: hidden; }
.cf-bar-fill { height: 100%; border-radius: 4px; min-width: 2px; }
.cf-bar-fill.up { background: #ef4444; }
.cf-bar-fill.down { background: #3b82f6; }
.cf-bar-fill.next { background: var(--amber); opacity: .75; }
.cf-bar-val { flex: 0 0 56px; font-size: 11px; font-weight: 600; color: var(--text-2); white-space: nowrap; }
.cf-bar-val i { font-style: normal; font-weight: 400; color: var(--text-4); margin-left: 3px; }
.cf-fan-table { width: 100%; border-collapse: collapse; font-size: 11px; margin: 2px 0; }
.cf-fan-table th { color: var(--text-4); font-weight: normal; padding: 1px 4px; text-align: right; }
.cf-fan-table td { padding: 1px 4px; text-align: right; color: var(--text-2); white-space: nowrap; }
.cf-fan-table td:first-child, .cf-fan-table th:first-child { text-align: left; color: var(--text-4); }
.cf-fan-table td.up { color: #d4553a; font-weight: 600; }
.cf-fan-table td.down { color: #2a7f4f; font-weight: 600; }
.cf-fan-sub { font-size: 10.5px; color: var(--text-4); margin-top: 2px; }
.cf-env-stats { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--line-2); }
.cf-env-stat { display: flex; align-items: baseline; gap: 5px; background: var(--chip-bg); border: 1px solid var(--line-2); border-radius: 8px; padding: 2px 9px; }
.cf-env-stat b { font-size: 12.5px; font-weight: 700; color: var(--text-1); }
.cf-env-stat b.up { color: #dc2626; }
.cf-env-stat b.down { color: #2563eb; }
.cf-env-stat span { font-size: 10.5px; color: var(--text-4); }
.cf-rail-note { font-size: 11px; color: var(--text-3); line-height: 1.8; }
.cf-rail-note b { color: var(--text-2); }
.cf-rail-note li { margin: 3px 0 3px 14px; list-style: disc; }

/* ============ 页脚 ============ */
.cf-foot-card {
    margin-top: 26px; padding: 16px 18px; border-radius: 12px;
    border: 1px dashed var(--border);
    background: var(--surface);
    background: color-mix(in srgb, var(--surface) 60%, transparent);
    font-size: 11px; color: var(--text-3); line-height: 1.9;
}
.cf-foot-card .risk { color: var(--amber-deep); }
#cfFoot { margin-bottom: 4px; }

/* ============ 弹窗 ============ */
.cf-modal { position: fixed; inset: 0; z-index: 1200; }
.cf-modal-mask { position: absolute; inset: 0; background: rgba(0, 0, 0, .55); backdrop-filter: blur(3px); }
.cf-modal-box {
    position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
    width: min(680px, 92vw); max-height: 82vh;
    display: flex; flex-direction: column;
    background: var(--surface); border: 1px solid var(--border);
    border-radius: 14px; box-shadow: 0 18px 50px rgba(0, 0, 0, .5);
}
.cf-modal-hd { display: flex; align-items: center; padding: 12px 16px; border-bottom: 1px solid var(--line-2); }
.cf-modal-title { font-size: 14px; font-weight: 700; color: var(--text-1); }
.cf-modal-close { margin-left: auto; background: none; border: none; color: var(--text-4); font-size: 20px; line-height: 1; cursor: pointer; }
.cf-modal-close:hover { color: var(--text-1); }
.cf-modal-body { padding: 12px 16px 16px; overflow-y: auto; font-size: 12.5px; color: var(--text-2); line-height: 1.65; }
.cf-msec { margin-bottom: 12px; }
.cf-msec h4 { font-size: 12px; color: var(--text-4); font-weight: 600; margin: 0 0 6px; }
.cf-mnote { font-size: 11px; color: var(--text-4); margin-top: 5px; }
.cf-kv { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0; }
.cf-kv span { background: var(--chip-bg); border: 1px solid var(--line-2); border-radius: 6px; padding: 1px 8px; font-size: 11px; color: var(--text-3); }
.cf-mtable { width: 100%; border-collapse: collapse; font-size: 12px; }
.cf-mtable th { text-align: left; color: var(--text-4); font-weight: 600; padding: 4px 8px; border-bottom: 1px solid var(--line-2); font-size: 11px; white-space: nowrap; }
.cf-mtable td { padding: 5px 8px; border-bottom: 1px solid var(--line-2); color: var(--text-2); }
.cf-mtable td.num { font-variant-numeric: tabular-nums; }
.cf-mtable td.nm { font-weight: 600; color: var(--text-1); }
.cf-win-up { color: #dc2626; font-weight: 600; }
.cf-win-down { color: #2563eb; font-weight: 600; }
.cf-hit-row { cursor: pointer; }
.cf-hit-row:hover { background: var(--hover-bg); }
.cf-row-weak td { background: rgba(234, 179, 8, .14); color: #ca8a04; font-weight: 600; }
.cf-ab-verdict { font-size: 11.5px; margin: 2px 0 6px; color: var(--text-3); }
.cf-ab-verdict.weak { color: #ca8a04; font-weight: 600; }
.cf-ab-verdict.ok { color: #16a34a; }
.cf-msec-sub { font-weight: 400; color: var(--text-4); margin-left: 6px; }
.cf-details { margin: 6px 0; }
.cf-details summary { cursor: pointer; font-size: 12px; color: var(--text-3); user-select: none; }
.cf-details summary:hover { color: var(--amber-deep); }
.cf-details[open] summary { margin-bottom: 6px; }
.cf-link { color: var(--amber-deep); text-decoration: none; }
.cf-link:hover { text-decoration: underline; }

/* ============ 夜间模式微调 ============ */
[data-theme="dark"] .cf-grade.A { color: #f87171; background: rgba(220, 38, 38, .2); }
[data-theme="dark"] .cf-grade.B { color: #60a5fa; background: rgba(59, 130, 246, .2); }
[data-theme="dark"] .cf-res b, [data-theme="dark"] .cf-filter.active, [data-theme="dark"] .cf-win-btn.active,
[data-theme="dark"] .cf-cnt, [data-theme="dark"] .cf-lane-weak, [data-theme="dark"] .cf-link,
[data-theme="dark"] .cf-foot-card .risk, [data-theme="dark"] .cf-details summary:hover { color: var(--amber-soft); }
[data-theme="dark"] .cf-win-up { color: #f87171; }
[data-theme="dark"] .cf-win-down { color: #60a5fa; }
[data-theme="dark"] .cf-env-regime.hot, [data-theme="dark"] .cf-env-prewarn.hot, [data-theme="dark"] .cf-env-stat b.up { color: #f87171; }
[data-theme="dark"] .cf-env-regime.cold, [data-theme="dark"] .cf-env-prewarn.cold, [data-theme="dark"] .cf-env-stat b.down { color: #60a5fa; }
[data-theme="dark"] .cf-p8.ok { color: #34d399; }
[data-theme="dark"] .cf-ab-verdict.ok { color: #34d399; }
[data-theme="dark"] .cf-row-weak td { color: var(--amber-soft); }
[data-theme="dark"] .cf-error { color: #f87171; }

/* ============ 响应式 ============ */
@media (max-width: 1100px) {
    .cf-grid { grid-template-columns: 1fr; }
    .cf-rail { position: static; max-height: none; flex-direction: row; flex-wrap: wrap; }
    .cf-rail-card { flex: 1 1 260px; }
}
@media (max-width: 760px) {
    body[data-page="confluence"] { --nav-h: 48px; }
    .cf-shell { padding: 0 12px 36px; }
    .cf-hero-in { padding: 20px 18px 18px; }
    .cf-hero-date { text-align: left; }
    .cf-stats { grid-template-columns: repeat(3, 1fr); }
    .cf-stat .v { font-size: 18px; }
    .cf-deck { top: var(--nav-h); padding: 8px 10px; gap: 7px; }
    .cf-deck-sep { display: none; }
    .cf-updated { margin-left: 0; width: 100%; }
    .cf-signals { grid-template-columns: 1fr; }
    .cf-mtable th { white-space: normal; }
    .cf-mtable td { word-break: break-word; }
    .cf-modal-box { width: min(680px, 94vw); }
    .cf-modal-body { padding: 10px 12px 14px; }
}
@media (prefers-reduced-motion: reduce) {
    body[data-page="confluence"] *, body[data-page="confluence"] *::before, body[data-page="confluence"] *::after { animation: none !important; transition: none !important; }
}
