/* 工具 14 · 北向资金流向
   独立视觉：靛蓝 / 青的资金流水台账，本地 SVG 折线 + 零轴 + 逐日表格。 */
.nbf {
    --a1: #3d53a4; --a1b: #1f9db5; --a1s: #e9edfa; --a1i: #2c3f88;
    --a2: #8fa7f0; --a2b: #65cfdf; --a2s: rgba(143, 167, 240, .15); --a2i: #b3c3f7;
    --h15-h1: clamp(30px, 3.6vw, 42px);
}
.nbf .nbf-h1 { letter-spacing: -.02em; }
.nbf-hero {
    background: radial-gradient(600px 230px at 88% -10%, rgba(31, 157, 181, .18), transparent 72%), linear-gradient(120deg, #f1f4fd 0%, #e7f3f7 100%);
    border-color: #d8e1f5;
}
.nbf-hero::before { background: linear-gradient(180deg, var(--a1), var(--a1b)); }
:root[data-theme="dark"] .nbf .nbf-hero { background: linear-gradient(120deg, #141a2e 0%, #10252c 100%); border-color: #263354; }
.nbf-quick { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.nbf-quick-sum { font-size: var(--h15-fs-13); color: var(--h15-ink-2); }
.nbf-quick-sum b { font-size: 20px; color: var(--h15-accent-ink); }
.nbf-wave { position: absolute; right: 28px; bottom: 18px; width: 150px; height: 44px; opacity: .35;
    background: radial-gradient(circle at 10px 34px, transparent 12px, var(--a1b) 13px, transparent 14px),
                radial-gradient(circle at 46px 24px, transparent 12px, var(--a1) 13px, transparent 14px),
                radial-gradient(circle at 82px 30px, transparent 12px, var(--a1b) 13px, transparent 14px),
                radial-gradient(circle at 118px 16px, transparent 12px, var(--a1) 13px, transparent 14px); }
@media (max-width: 620px) { .nbf-wave { display: none; } }

.nbf-kpis { margin-bottom: 18px; }
.nbf-kpis .h15-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 700px) { .nbf-kpis .h15-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.nbf-kpis .h15-note { margin-top: 14px; }
.nbf-pos { color: var(--h15-up) !important; }
.nbf-neg { color: var(--h15-down) !important; }

.nbf-chart-panel { margin-bottom: 18px; }
.nbf-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 8px; font-size: var(--h15-fs-12); color: var(--h15-ink-2); }
.nbf-legend span { display: inline-flex; align-items: center; gap: 6px; }
.nbf-legend i { width: 15px; height: 3px; border-radius: 2px; display: inline-block; }
.nbf-l-sh { background: #3d53a4; }
.nbf-l-sz { background: #1f9db5; }
.nbf-l-sum { background: #d98a2b; }
.nbf-l-zero { background: var(--h15-ink-3); height: 1px !important; }
.nbf-chart-wrap { padding: 8px; border: 1px solid var(--h15-line); border-radius: 12px; background: var(--h15-card-2); overflow: hidden; }
.nbf-chart { display: block; width: 100%; height: auto; }
.nbf-grid { stroke: var(--h15-line); stroke-width: 1; }
.nbf-zero { stroke: var(--h15-ink-3); stroke-width: 1; stroke-dasharray: 5 4; }
.nbf-axis-t { fill: var(--h15-ink-3); font-family: var(--h15-font-num); font-size: 10px; }
.nbf-line { fill: none; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.nbf-line-sh { stroke: #3d53a4; }
.nbf-line-sz { stroke: #1f9db5; }
.nbf-line-sum { stroke: #d98a2b; stroke-width: 2.6; }
.nbf-dot { stroke: var(--h15-card); stroke-width: 1; }
:root[data-theme="dark"] .nbf .nbf-line-sh { stroke: #8fa7f0; }
:root[data-theme="dark"] .nbf .nbf-line-sz { stroke: #65cfdf; }
:root[data-theme="dark"] .nbf .nbf-line-sum { stroke: #f0b45f; }

.nbf-desk { display: grid; grid-template-columns: minmax(0, 1fr) 296px; gap: 18px; align-items: start; }
@media (max-width: 980px) { .nbf-desk { grid-template-columns: 1fr; } }
.nbf-tbl { min-width: 560px; }
.nbf-tbl button { padding: 3px 9px; border: 1px solid var(--h15-line); border-radius: 999px; background: var(--h15-card); color: var(--h15-ink-3); font-family: inherit; font-size: var(--h15-fs-11); cursor: pointer; }
.nbf-add-row { display: grid; grid-template-columns: 1.1fr 1fr 1fr auto; gap: 8px; margin-top: 14px; }
@media (max-width: 700px) { .nbf-add-row { grid-template-columns: 1fr 1fr; } .nbf-add-row .h15-btn { grid-column: 1 / -1; } }
.nbf-esc-label { display: flex; align-items: center; gap: 7px; margin: 14px 0 6px; }
.nbf-esc-label .h15-select { width: 118px; padding: 5px 8px; }
.nbf-faq .h15-faq-item { border-left: 3px solid var(--h15-accent-soft); }
.nbf-report-pre { margin: 0; white-space: pre-wrap; font-family: var(--h15-font-num); font-size: var(--h15-fs-12); line-height: 1.9; }
