/* ============================================================
   Budget Forecast + Cash Flow — .fc-* (project) and .cfd-* (portfolio)
   Reuses .cd-kpi / .cd-head / .cd-empty and .mod-tb / .mod-seg.
   ============================================================ */

.fc-soft { color:var(--ink-faint); font-weight:400; font-size:.92em; }
.fc-code { font-weight:600; font-variant-numeric:tabular-nums; white-space:nowrap; }

/* ── Tables ───────────────────────────────────────────────── */
.fc-tablewrap { overflow-x:auto; border:1px solid var(--bd); border-radius:12px; background:var(--white); margin-top:14px; }
.fc-table { width:100%; border-collapse:collapse; font-size:13px; min-width:920px; }
.fc-table thead th { text-align:left; padding:9px 12px; font-size:10.5px; font-weight:600; letter-spacing:.03em;
  text-transform:uppercase; color:var(--ink-faint); border-bottom:1px solid var(--bd); white-space:nowrap; user-select:none; }
.fc-table thead th.r { text-align:right; }
.fc-table td { padding:8px 12px; border-bottom:1px solid color-mix(in srgb,var(--bd) 60%,transparent); color:var(--ink); }
.fc-table tbody tr:last-child td { border-bottom:none; }
.fc-table td.r { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.fc-table td.b { font-weight:700; }
.fc-table td.neg, .fc-table td.r.neg { color:#DC2626; }
.fc-table td.pos, .fc-table td.r.pos { color:#059669; }
.fc-table tfoot td { border-top:2px solid var(--bd); border-bottom:none; font-weight:700; background:var(--bg2);
  padding:10px 12px; font-variant-numeric:tabular-nums; }
.fc-table tfoot td.r { text-align:right; }

/* A line the PM has taken a view on reads differently from a derived one. */
.fc-over td { background:color-mix(in srgb,var(--accent-bg) 55%,transparent); }
.fc-over .fc-code::after { content:'●'; color:var(--accent); font-size:9px; margin-left:5px; vertical-align:middle; }
.fc-unalloc td { background:rgba(202,138,4,.07); color:#B45309; }

.fc-bar { display:inline-block; width:52px; height:5px; border-radius:3px; background:var(--bg2);
  border:1px solid var(--bd); overflow:hidden; vertical-align:middle; margin-right:6px; }
.fc-bar span { display:block; height:100%; background:var(--accent); }

.fc-mcell { display:flex; gap:6px; align-items:center; }
.fc-method, .fc-val { padding:5px 8px; border:1px solid var(--bd); border-radius:7px; background:var(--white);
  color:var(--ink); font-size:12px; font-family:inherit; }
.fc-method { flex:1; min-width:110px; }
.fc-val { width:96px; text-align:right; font-variant-numeric:tabular-nums; }
.fc-method:focus, .fc-val:focus { outline:none; border-color:var(--accent); }

/* ── Notes ────────────────────────────────────────────────── */
.fc-note, .fc-assume { display:flex; align-items:flex-start; gap:8px; margin-top:14px; padding:10px 12px;
  border-radius:9px; font-size:12.5px; line-height:1.5; }
.fc-note { color:#B45309; background:rgba(202,138,4,.09); border:1px solid rgba(202,138,4,.26); }
.fc-assume { color:var(--ink-soft); background:var(--bg2); border:1px solid var(--bd); }
.fc-note i, .fc-assume i { margin-top:1px; color:inherit; }
.fc-legend { margin-top:12px; font-size:12px; color:var(--ink-soft); line-height:1.55;
  display:flex; align-items:flex-start; gap:8px; }
.fc-legend i { color:var(--ink-faint); margin-top:2px; }
.fc-legend strong { color:var(--ink); }
.fc-tag { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--ink-faint);
  background:var(--bg2); border:1px solid var(--bd); border-radius:4px; padding:0 4px; margin-left:5px; }
.fc-fc td { color:var(--ink-soft); }

/* ── Chart ────────────────────────────────────────────────── */
.fc-chart { margin-top:16px; border:1px solid var(--bd); border-radius:12px; background:var(--white); padding:14px 16px 8px; }
.fc-chart svg { width:100%; height:300px; display:block; overflow:visible; }
.fc-grid { stroke:var(--bd); stroke-width:1; }
.fc-grid.zero { stroke:var(--ink-faint); stroke-width:1.2; }
.fc-today { stroke:var(--ink-faint); stroke-width:1; stroke-dasharray:3 3; }
.fc-todaytx { fill:var(--ink-faint); font-size:9.5px; }
.fc-ytx { fill:var(--ink-faint); font-size:9.5px; text-anchor:end; font-variant-numeric:tabular-nums; }
.fc-xtx { fill:var(--ink-faint); font-size:9.5px; text-anchor:middle; }
.fc-line { fill:none; stroke-width:2; vector-effect:non-scaling-stroke; stroke-linejoin:round; stroke-linecap:round; }
.fc-line.cost { stroke:#DC2626; }
.fc-line.bill { stroke:var(--ink-faint); stroke-dasharray:4 3; }
.fc-line.recv { stroke:#059669; }
.fc-line.net  { stroke:var(--accent); stroke-width:2.4; }
.fc-area { fill:color-mix(in srgb,var(--accent) 14%,transparent); stroke:none; }
.fc-area.neg { fill:rgba(220,38,38,.10); }

.fc-keys { display:flex; flex-wrap:wrap; gap:16px; margin-top:6px; padding-top:8px; border-top:1px solid var(--bd); }
.fc-key { font-size:11.5px; color:var(--ink-soft); display:inline-flex; align-items:center; gap:6px; }
.fc-key .sw { display:inline-block; width:14px; height:2.5px; border-radius:2px; }
.fc-key .sw.cost { background:#DC2626; }
.fc-key .sw.bill { background:var(--ink-faint); }
.fc-key .sw.recv { background:#059669; }
.fc-key .sw.net  { background:var(--accent); height:3px; }

/* ── Portfolio ────────────────────────────────────────────── */
.cfd-table thead th { cursor:pointer; }
.cfd-table thead th:hover { color:var(--ink); }
.cfd-row { cursor:pointer; }
.cfd-row:hover td { background:var(--bg2); }
.cfd-name { font-weight:600; white-space:nowrap; }
.cfd-tag { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:#B45309;
  background:rgba(202,138,4,.12); border-radius:4px; padding:1px 5px; margin-left:6px; cursor:help; }

@media (max-width:760px) {
  .fc-chart svg { height:220px; }
}
