/* Job Forecast v2 — Finance (finance-b): Invoices · Payroll · Payroll ledger. Page-specific rules only; tokens come from jf.css. */
/* Invoices: list + detail */
.fb-inv{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:24px;align-items:start}
.fb-inv .side{position:sticky;top:0;max-height:calc(100vh - 90px);overflow:auto;padding-bottom:12px}
.fb-inv .rows.inv .row.on{background:var(--bg-1);box-shadow:inset 3px 0 0 var(--brand)}
.fb-inv .row-n .pill{margin-left:4px}
.fb-kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:5px 14px;font-size:13px;align-items:baseline}
.fb-kv .mk-muted{font-size:12px;white-space:nowrap}
.fb-kv .row-v{text-align:left}
.fb-actions{display:flex;flex-wrap:wrap;gap:6px}
.fb-actions .btn[disabled]{opacity:.45;cursor:not-allowed}
.fb-proof{display:flex;flex-direction:column;gap:10px}
.fb-proof .ph-item{display:flex;flex-direction:column;gap:5px;font-size:12px}
.fb-proof .thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.fb-proof .thumbs img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:4px;cursor:zoom-in;display:block}
.fb-touch{display:flex;flex-direction:column;gap:6px;font-size:12px}
.fb-touch .t{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.fb-touch .t .mk-muted{font-size:11px}
.fb-more{display:block;margin:10px auto}
@media (max-width:1100px){.fb-inv{grid-template-columns:1fr}.fb-inv .side{position:static;border-left:0;padding-left:0;max-height:none}}
/* Payroll: performance cards + checks */
.fb-pp .pp-rows .row{grid-template-columns:1fr auto;padding:5px 0}
.fb-pp .pp-rows .row .row-v{text-align:right}
.fb-pp .pp-h{text-align:center}
.fb-checks .row{grid-template-columns:90px minmax(0,1fr) auto auto}
.fb-range{display:inline-flex;gap:6px;align-items:center}
.fb-range input{height:32px;width:auto}
/* Payroll ledger */
.canvas>.fb-wrap{flex:0 0 auto}
.fb-wrap .tablewrap{max-height:calc(100vh - 220px)}
.fb-policy .btn[disabled],.fb-runbar .btn[disabled],.fb-range .btn[disabled],.fb-checks .btn[disabled],.fb-pp .btn[disabled]{opacity:.45;cursor:not-allowed}
.fb-nums7{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important}
.fb-policy{border:1px solid var(--line);border-radius:10px;padding:10px 14px;background:var(--bg-0);align-items:flex-end}
.fb-policy .fld{min-width:96px}
.fb-policy .fld input{height:32px;width:96px}
.fb-policy .fld .btn{height:32px;justify-content:flex-start;font-weight:400}
.fb-policy .note{font-size:11px;color:var(--text-faint);max-width:440px;line-height:1.4}
.fb-ledger td,.fb-ledger th{white-space:nowrap;vertical-align:middle}
.fb-ledger td.job{white-space:normal;min-width:190px}
.fb-ledger td.job .mk-muted{font-size:11px}
.fb-ledger td.t{font-family:var(--ui);font-size:13px;color:var(--text)}
.fb-ledger input.num{width:74px;height:28px;padding:0 6px;text-align:right;border:1px solid var(--line);border-radius:var(--r-control);background:var(--bg-0);color:var(--text);font-size:12px;font-family:inherit}
.fb-ledger input.num.auto{border-style:dashed}
.fb-ledger .seg button{padding:3px 8px}
.fb-ledger input[type=checkbox]{width:15px;height:15px;accent-color:var(--good);cursor:pointer}
.fb-ledger .over{display:block;font-size:10px;color:var(--bad);font-weight:500}
.fb-ledger tr.sched td{opacity:.8}
.fb-ledger .pill{margin-top:3px}
.fb-status{display:block;margin-top:3px;font-size:10px;font-weight:600;letter-spacing:.04em;padding:1px 6px;border-radius:99px;border:1px solid var(--line);background:var(--bg-0);color:var(--text-dim);cursor:pointer;font-family:inherit}
.fb-status.complete{color:var(--good);border-color:var(--good)}
.fb-status.in_progress{color:var(--warn);border-color:var(--warn)}
.fb-status.pending{color:var(--info);border-color:var(--info)}
.fb-runbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;border:1px solid var(--good);border-radius:10px;padding:10px 14px;background:color-mix(in oklch,var(--good) 8%,transparent)}
.fb-runbar label{display:inline-flex;gap:5px;align-items:center;font-size:13px}
.fb-runcard{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--bg-0);display:flex;flex-direction:column;gap:6px}
.fb-runcard .tot{font-size:15px;font-weight:600}

/* Receivables: aging strip + open-balance table + three-book cross-checks */
.fb-ar-rule{margin:-6px 0 14px;font-size:12.5px;max-width:78ch}
.fb-ar-note{margin:0 0 16px;padding:9px 12px;border-radius:6px;background:var(--bg-1);border-left:3px solid var(--warn,#b8860b);font-size:12.5px}
.fb-ar-buckets{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:16px}
.fb-ar-bk{display:flex;flex-direction:column;gap:3px;align-items:flex-start;padding:11px 13px;border:1px solid var(--line);border-radius:7px;background:var(--bg-0);cursor:pointer;text-align:left;transition:border-color .12s,background .12s}
.fb-ar-bk:hover:not(:disabled){border-color:var(--brand)}
.fb-ar-bk.on{border-color:var(--brand);background:var(--bg-1);box-shadow:inset 0 -2px 0 var(--brand)}
.fb-ar-bk:disabled{opacity:.5;cursor:default}
.fb-ar-bk .lb{font-size:11px;letter-spacing:.04em;text-transform:uppercase;opacity:.65}
.fb-ar-bk .n{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}
.fb-ar-bk .sb{font-size:11px;opacity:.6}
.fb-ar-bk.warn .n{color:var(--warn,#b8860b)}
.fb-ar-bk.bad .n{color:var(--bad,#b3261e)}
.fb-ar-bk.zero .n{opacity:.45;font-weight:500}
.fb-ar-flag{margin:0 0 14px;padding:9px 12px;border-radius:6px;background:color-mix(in srgb,var(--bad,#b3261e) 8%,transparent);border-left:3px solid var(--bad,#b3261e);font-size:12.5px}
.fb-ar-tbl td.owed{font-weight:600}
.fb-ar-tbl tr.is-old td.owed{color:var(--bad,#b3261e)}
.fb-ar-tbl .lnk{cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.fb-ar-checks{margin-top:26px}
.fb-ar-h2{font-size:15px;margin:0 0 4px}
.fb-ar-checks>.mk-muted{font-size:12.5px;max-width:82ch;margin:0 0 12px}
.fb-ar-check{margin-bottom:9px;padding:0;overflow:hidden}
.fb-ar-chead{display:flex;align-items:baseline;gap:11px;width:100%;padding:11px 14px;background:none;border:0;cursor:pointer;text-align:left;font:inherit}
.fb-ar-chead:hover{background:var(--bg-1)}
.fb-ar-chead .tw{opacity:.55;font-size:11px;width:10px}
.fb-ar-chead .lb{font-weight:600;font-size:13.5px}
.fb-ar-chead .n{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:600}
.fb-ar-cbody{padding:0 14px 14px 35px}
.fb-ar-cbody>.mk-muted{font-size:12.5px;max-width:82ch;margin:0 0 10px}
@media (max-width:1100px){.fb-ar-buckets{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.fb-ar-buckets{grid-template-columns:repeat(2,minmax(0,1fr))}.fb-ar-cbody{padding-left:14px}}
.fb-status.paid{color:var(--good);border-color:var(--good);background:color-mix(in srgb,var(--good) 10%,transparent)}
.fb-status.emp_paid{color:#fff;border-color:var(--good);background:var(--good)}
.fb-paymode{display:inline-flex}
.fb-paymode button{font-size:11px;padding:3px 9px}
.pill.paidas{background:var(--bg-1);border:1px dashed var(--line);color:var(--text-dim);font-size:9.5px;letter-spacing:.05em}
.fb-rcpt-tbl tr.is-stock{opacity:.72}
.fb-rcpt-tbl tr.is-open td{background:color-mix(in srgb,var(--warn,#b8860b) 6%,transparent)}
.fb-rcpt-tbl td.credit{color:var(--good)}
.fb-rcpt-tbl td.over{color:var(--bad,#b3261e);font-weight:600}
.fb-rcpt-tbl td.under{color:var(--good)}
.fb-rcpt-tbl .rc-how{font-size:11.5px;max-width:230px}
.fb-rcpt-tbl .seg.sm button{font-size:10.5px;padding:2px 7px}
.rc-cands{display:flex;flex-wrap:wrap;gap:4px}
.rc-cand{font-size:11px;padding:2px 8px;border:1px dashed var(--line);border-radius:99px;background:var(--bg-0);cursor:pointer;font-family:inherit;color:var(--text-dim)}
.rc-cand:hover:not(:disabled){border-style:solid;border-color:var(--brand);color:var(--brand)}
