/* ============ Finance — invoices, receivables & the USD ledger ============
   fin- prefixed, existing tokens only. Warm-paper executive: serif leads,
   JetBrains Mono money, status pills draft-grey / posted-gold / paid-green. */

/* ---------------- hero band ---------------- */
.fin-hero{padding:20px 24px;border-left:3px solid var(--gold);margin-bottom:18px;}
.fin-hero__eyebrow{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);font-weight:700;}
.fin-hero__row{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-top:8px;flex-wrap:wrap;}
.fin-hero__lead{font-family:var(--serif);font-size:22px;color:var(--ink);line-height:1.2;font-weight:600;max-width:640px;}
.fin-hero__lead b{color:var(--gold);font-weight:600;}
.fin-hero__chips{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.fin-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;letter-spacing:.04em;padding:4px 10px;border-radius:20px;font-weight:600;white-space:nowrap;background:var(--grn-soft);color:var(--grn);border:1px solid var(--line);}
.fin-chip .d{width:7px;height:7px;border-radius:50%;background:currentColor;flex:none;}
.fin-chip--rule{background:var(--gold-soft);color:var(--gold);}

/* ---------------- KPI strip ---------------- */
.fin-kpi-v{font-size:24px;letter-spacing:-.01em;}

/* ---------------- status pills + kind tags ---------------- */
.fin-st{display:inline-block;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 9px;border-radius:20px;}
.fin-st--draft{background:var(--panel-2);color:var(--mute);}
.fin-st--posted{background:var(--gold-soft);color:var(--gold);}
.fin-st--paid{background:var(--grn-soft);color:var(--grn);}
.fin-kind{display:inline-block;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.04em;padding:2px 8px;border-radius:6px;border:1px solid var(--line);background:var(--paper);color:var(--body);}
.fin-kind--deposit{border-color:var(--rule);}
.fin-kind--balance{background:var(--panel);}

/* ---------------- toolbar + filter chips ---------------- */
.fin-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px;}
.fin-chips{display:flex;gap:7px;flex-wrap:wrap;}
.fin-chip-n{font-family:var(--mono);font-size:10px;margin-left:6px;padding:0 6px;border-radius:10px;background:var(--panel-2);color:var(--mute);}
.chip.on .fin-chip-n{background:rgba(255,255,255,.18);color:#fff;}
.fin-spacer{flex:1;}

/* ---------------- issue-invoice form ---------------- */
.fin-form-mount{margin-bottom:12px;}
.fin-form{max-width:640px;border-left:3px solid var(--gold);}
.fin-form__t{font-family:var(--serif);font-size:15px;font-weight:600;color:var(--ink);margin-bottom:10px;}
.fin-form__row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px;}
.fin-form__deal{flex:1;min-width:280px;}
.fin-form__acts{display:flex;gap:8px;margin-top:10px;}
.fin-form-err{min-height:16px;font-size:12px;color:var(--red);font-weight:500;margin-top:8px;}
.fin-hint{font-size:11.5px;color:var(--mute);line-height:1.55;}

/* ---------------- invoices table ---------------- */
.fin-scroll{max-height:calc(100vh - 320px);}
.fin-tbl td{padding:10px 12px;}
.fin-no{font-size:12px;font-weight:600;color:var(--ink);white-space:nowrap;}
.fin-cell-d .t{font-size:12px;font-weight:600;color:var(--ink);}
.fin-cell-d .sub{font-size:11px;color:var(--mute);margin-top:1px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.fin-paid-v{color:var(--grn);font-weight:600;}
.fin-zero{color:var(--faint);}
.fin-out{color:var(--ink);font-weight:600;}

/* ---------------- receivables aging ---------------- */
.fin-buckets{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px;}
@media(max-width:1100px){.fin-buckets{grid-template-columns:repeat(2,1fr);}}
.fin-bucket{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:12px 15px;box-shadow:var(--shadow);border-top:3px solid var(--line);}
.fin-bucket--cur{border-top-color:var(--grn);}
.fin-bucket--b30{border-top-color:var(--gold);}
.fin-bucket--b60{border-top-color:var(--amber);}
.fin-bucket--b90{border-top-color:var(--red);}
.fin-bucket__k{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);font-weight:700;}
.fin-bucket__v{font-size:19px;color:var(--ink);font-weight:600;margin-top:5px;}
.fin-bucket__n{font-size:11px;color:var(--mute);margin-top:2px;}
.fin-age{display:inline-block;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.04em;padding:2px 8px;border-radius:20px;white-space:nowrap;}
.fin-age--cur{background:var(--grn-soft);color:var(--grn);}
.fin-age--b30{background:var(--gold-soft);color:var(--gold);}
.fin-age--b60{background:var(--gold-soft);color:var(--amber);}
.fin-age--b90{background:var(--red-soft);color:var(--red);}

/* ---------------- P&L ---------------- */
.fin-pnl{align-items:start;}
.fin-ledger__rows{margin-top:12px;}
.fin-ledger__row{display:flex;align-items:baseline;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);}
.fin-ledger__row:last-child{border-bottom:none;}
.fin-ledger__row .l{font-size:13px;color:var(--ink);font-weight:500;}
.fin-ledger__row .l small{display:block;font-size:10.5px;color:var(--mute);font-weight:400;margin-top:1px;}
.fin-ledger__row .dots{flex:1;border-bottom:1px dotted var(--rule);transform:translateY(-4px);}
.fin-ledger__row .v{font-size:14px;font-weight:600;color:var(--ink);}
.fin-ledger__row--lead .v{font-size:16px;color:var(--gold);}
.fin-months{margin-top:12px;display:flex;flex-direction:column;gap:10px;}
.fin-mo{display:grid;grid-template-columns:70px 1fr 190px;gap:12px;align-items:center;}
.fin-mo__m{font-family:var(--mono);font-size:11px;color:var(--body);font-weight:600;}
.fin-mo__bars{display:flex;flex-direction:column;gap:3px;}
.fin-mo__bar{display:block;height:9px;border-radius:5px;background:var(--panel-2);min-width:2px;}
.fin-mo__bar.net{background:var(--gold);}
.fin-mo__bar.col{background:var(--grn);height:6px;}
.fin-mo__v{font-size:12px;color:var(--ink);font-weight:600;text-align:right;}
.fin-mo__v small{display:block;font-size:10px;color:var(--mute);font-weight:400;margin-top:1px;}
.fin-legend{display:flex;gap:16px;margin-top:14px;flex-wrap:wrap;}
.fin-legend span{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--mute);}
.fin-legend i{width:11px;height:11px;border-radius:3px;flex:none;}
.fin-legend i.net{background:var(--gold);}
.fin-legend i.col{background:var(--grn);}

/* ---------------- drawer ---------------- */
.fin-drawer{width:620px;}
.fin-dr-hd{padding-right:60px;}
.fin-dr-eyebrow{font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);font-weight:700;}
.fin-dr-title{font-size:19px;color:var(--ink);font-weight:700;margin-top:5px;letter-spacing:-.01em;}
.fin-dr-meta{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap;}
.fin-gross{font-size:13px;color:var(--ink);font-weight:700;margin-left:auto;}
.fin-dr-h{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);font-weight:700;margin:20px 0 9px;padding-bottom:6px;border-bottom:1px solid var(--line);}
.fin-dr-h:first-child{margin-top:0;}
.fin-kv{display:grid;grid-template-columns:1fr 1fr;gap:9px 16px;}
.fin-kv__it{display:flex;flex-direction:column;gap:2px;min-width:0;}
.fin-kv__it--wide{grid-column:1/-1;}
.fin-kv__k{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:700;}
.fin-kv__v{font-size:13px;color:var(--ink);line-height:1.45;}
.fin-lines{border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;}
.fin-lines__tbl th{position:static;}
.fin-lines__tbl tr.fin-static{cursor:default;}
.fin-lines__tbl tr.fin-static:hover{background:transparent;}
.fin-line{display:inline-block;font-size:12px;font-weight:600;color:var(--ink);}
.fin-line--land{color:var(--body);}
.fin-line--service{color:var(--gold);}
.fin-line__d{font-size:11px;color:var(--mute);margin-top:2px;}
.fin-tot td{border-top:1.5px solid var(--rule);border-bottom:none;background:var(--panel);font-weight:600;cursor:default;}
tr.fin-tot:hover{background:var(--panel);}
.fin-prog__track{height:8px;border-radius:5px;background:var(--panel-2);overflow:hidden;}
.fin-prog__track span{display:block;height:100%;background:var(--grn);border-radius:5px;transition:width .35s cubic-bezier(.4,0,.2,1);}
.fin-prog__row{display:flex;justify-content:space-between;gap:12px;margin-top:8px;font-size:12px;}
.fin-rem{color:var(--amber);font-weight:600;}
.fin-settled{color:var(--grn);font-weight:600;}
.fin-dr-acts{margin-top:22px;padding-top:16px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:10px;align-items:flex-start;}
.fin-payform{width:100%;}
.fin-payform__row{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:9px;}
.fin-payform__row .input{flex:1;min-width:150px;}
.fin-paid-note{font-size:13px;color:var(--grn);font-weight:600;}

/* ---------------- states ---------------- */
.fin-empty{text-align:center;color:var(--mute);padding:34px 20px;font-size:13px;}
.fin-empty.sm{padding:14px 4px;text-align:left;}
.fin-inline-err{display:flex;align-items:center;gap:9px;color:var(--red);font-size:12.5px;background:var(--red-soft);border-color:var(--red-soft);margin-bottom:14px;}
.fin-inline-err__m{font-weight:700;}
.fin-err__act{margin-top:12px;text-align:center;}
.fin-loading{display:flex;align-items:center;gap:11px;color:var(--mute);font-size:13px;}
.fin-spin{width:15px;height:15px;border:2px solid var(--line);border-top-color:var(--gold);border-radius:50%;flex:none;animation:fin-rot .7s linear infinite;}
@keyframes fin-rot{to{transform:rotate(360deg);}}
