/* ============================================================
   Owner + Sub Billing — AIA G702 / G703 and the lien waiver exchange
   .bl-* namespace. Reuses .cd-kpi / .cd-head / .cd-empty (curves-dash.css),
   .cm-pill (financials.css) and .mod-tb / .mod-seg (app.css).
   ============================================================ */

.bl-soft  { color:var(--ink-faint); font-weight:400; font-size:.92em; }
.bl-count { font-size:10.5px; font-weight:700; color:var(--ink-faint); background:var(--bg2);
  border:1px solid var(--bd); border-radius:20px; padding:1px 7px; font-variant-numeric:tabular-nums; }
.bl-badge { display:inline-block; min-width:16px; margin-left:6px; padding:0 5px; border-radius:20px;
  background:#B45309; color:#fff; font-size:10px; font-weight:700; line-height:16px; text-align:center; }
.bl-c { text-align:center; }
.bl-n { width:34px; color:var(--ink-faint); font-variant-numeric:tabular-nums; }
.bl-no { font-weight:600; font-variant-numeric:tabular-nums; }

/* ── Sections ─────────────────────────────────────────────── */
.bl-sec { margin-top:16px; }
.bl-sec-hd { display:flex; align-items:center; gap:8px; margin-bottom:8px; font-size:12px; font-weight:700;
  letter-spacing:.03em; text-transform:uppercase; color:var(--ink-soft); }
.bl-sec-hd > i { color:var(--ink-faint); font-size:15px; }
.bl-sovtot { margin-left:auto; font-variant-numeric:tabular-nums; }

.bl-facts { display:flex; flex-wrap:wrap; gap:18px 34px; border:1px solid var(--bd); border-radius:12px;
  background:var(--white); padding:14px 16px; }
.bl-fact-k { font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); }
.bl-fact-v { font-size:13.5px; font-weight:600; color:var(--ink); margin-top:3px; }

/* ── Tables ───────────────────────────────────────────────── */
.bl-tablewrap { overflow-x:auto; border:1px solid var(--bd); border-radius:12px; background:var(--white); }
.bl-table { width:100%; border-collapse:collapse; font-size:13px; }
.bl-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; }
.bl-table thead th.r { text-align:right; }
.bl-table td { padding:9px 12px; border-bottom:1px solid color-mix(in srgb,var(--bd) 60%,transparent);
  vertical-align:middle; color:var(--ink); }
.bl-table tbody tr:last-child td { border-bottom:none; }
.bl-table td.r { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.bl-table td.b { font-weight:700; }
.bl-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; }
.bl-table tfoot td.r { text-align:right; }
.bl-trow { cursor:pointer; }
.bl-trow:hover td { background:var(--bg2); }
.bl-actions { white-space:nowrap; }

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

/* Inline editors (SOV + G703) sit flush — the table is the form. */
.bl-table input[type=text], .bl-table input[type=number], .bl-table select {
  width:100%; box-sizing:border-box; padding:6px 8px; border:1px solid transparent; border-radius:6px;
  background:transparent; color:var(--ink); font-size:13px; font-family:inherit; }
.bl-table input[type=number] { font-variant-numeric:tabular-nums; text-align:right; }
.bl-table input:hover, .bl-table select:hover { border-color:var(--bd); }
.bl-table input:focus, .bl-table select:focus { outline:none; border-color:var(--accent); background:var(--white); }
.bl-edit td, .bl-g703 td { padding:5px 8px; }
.bl-x { border:none; background:transparent; color:var(--ink-faint); cursor:pointer; padding:4px; border-radius:6px; line-height:1; }
.bl-x:hover { color:#DC2626; background:rgba(220,38,38,.08); }
.bl-lock { color:var(--ink-faint); font-size:14px; cursor:help; }

/* A G703 line billed past its scheduled value — caught before the owner catches it. */
.pa-row.over input[data-k="this_period"], .pa-row.over input[data-k="materials_stored"] { border-color:#DC2626; }
.pa-row.over .pa-bal, .pa-row.over .pa-g { color:#DC2626; font-weight:700; }

.bl-sovfoot { margin-top:10px; font-size:12.5px; color:#059669; }
.bl-sovfoot strong { font-variant-numeric:tabular-nums; }
.bl-sovfoot.off { color:#B45309; }

/* ── Pay application ──────────────────────────────────────── */
.bl-payhd { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:12px 0 10px; }
.bl-payno { font-size:18px; font-weight:700; color:var(--ink); letter-spacing:-.01em; }
.bl-paymeta { font-size:11.5px; color:var(--ink-faint); margin-top:2px; }

.bl-warn { display:flex; align-items:flex-start; gap:8px; margin-bottom:12px; padding:10px 12px; border-radius:9px;
  font-size:12.5px; line-height:1.45; color:#991B1B; background:rgba(220,38,38,.07); border:1px solid rgba(220,38,38,.24); }
.bl-warn i { margin-top:1px; }
.bl-warn.soft { color:#B45309; background:rgba(202,138,4,.09); border-color:rgba(202,138,4,.26); }

.bl-ctrls { display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:12px 16px;
  border:1px solid var(--bd); border-radius:12px; background:var(--bg2); padding:14px 16px; margin-bottom:4px; }
.bl-field { display:flex; flex-direction:column; gap:6px; }
.bl-field > label { font-size:11px; font-weight:600; letter-spacing:.03em; text-transform:uppercase; color:var(--ink-faint); }
.bl-field input, .bl-field select { padding:8px 10px; border:1px solid var(--bd); border-radius:7px;
  background:var(--white); color:var(--ink); font-size:13px; font-family:inherit; }
.bl-field input:focus, .bl-field select:focus { outline:none; border-color:var(--accent); }

/* The G702 certificate reads like the form it is: numbered, right-aligned, subtotalled. */
.bl-certwrap { border:1px solid var(--bd); border-radius:12px; background:var(--white); overflow:hidden; }
.bl-certtable { width:100%; border-collapse:collapse; font-size:13px; }
.bl-certtable td { padding:9px 14px; border-bottom:1px solid color-mix(in srgb,var(--bd) 55%,transparent); color:var(--ink); }
.bl-certtable tr:last-child td { border-bottom:none; }
.bl-certtable td.r { text-align:right; width:170px; font-weight:600; font-variant-numeric:tabular-nums; white-space:nowrap; }
.bl-certtable tr.sub td { background:var(--bg2); font-weight:700; }
.bl-certtable tr.due td { background:var(--ink); color:var(--white); font-weight:700; font-size:15px; }
.bl-certtable tr.due td.bl-n { color:color-mix(in srgb,var(--white) 60%,transparent); }

/* ── Lien waivers ─────────────────────────────────────────── */
.bl-dir { font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em;
  border-radius:5px; padding:2px 6px; white-space:nowrap; }
.bl-dir.in  { color:var(--accent); background:var(--accent-bg); }
.bl-dir.out { color:var(--ink-soft); background:var(--bg2); border:1px solid var(--bd); }
/* Unconditional waivers give up lien rights on signature — they read differently on purpose. */
.bl-type { font-size:12px; }
.bl-type.uncond { color:#B45309; font-weight:600; }
.bl-block { color:#B45309; margin-left:4px; cursor:help; }
.lw-status { padding:5px 8px; border:1px solid var(--bd); border-radius:7px; background:var(--white);
  color:var(--ink); font-size:12px; font-family:inherit; }
.lw-status:focus { outline:none; border-color:var(--accent); }

/* ── Modal ────────────────────────────────────────────────── */
.bl-modal { position:fixed; inset:0; z-index:900; background:rgba(0,0,0,.42);
  display:flex; align-items:center; justify-content:center; padding:20px; }
.bl-modal-box { width:min(620px,100%); max-height:88vh; display:flex; flex-direction:column;
  background:var(--white); border:1px solid var(--bd); border-radius:14px; box-shadow:0 20px 60px rgba(0,0,0,.28); }
.bl-modal-hd { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 16px;
  border-bottom:1px solid var(--bd); font-size:14.5px; font-weight:700; color:var(--ink); }
.bl-modal-bd { padding:16px; overflow-y:auto; }
.bl-modal-ft { display:flex; justify-content:flex-end; gap:8px; padding:12px 16px; border-top:1px solid var(--bd); }
.bl-mgrid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:14px 16px; }

@media (max-width:760px) {
  .bl-ctrls { grid-template-columns:1fr 1fr; }
  .bl-facts { gap:14px 20px; }
}
