/* acct.css - Accounting module (acct.js, acct_bills.js, acct_reports.js). Auto-loaded. Prefixes: .ac- hub, .coa- chart, .jl- journal grid, .rpt- reports, .pk- picker. */

/* ---------- hub shell ---------- */
.ac-head-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.ac-nav { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 6px; margin: 0 -2px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.ac-nav::-webkit-scrollbar { display: none; }
.ac-nav a, .ac-subnav a { flex: none; display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 8px 14px; border-radius: 999px; background: var(--paper); border: 1px solid var(--line-2); color: var(--navy); font-weight: 600; font-size: .9rem; text-decoration: none; white-space: nowrap; }
.ac-nav a:hover, .ac-subnav a:hover { border-color: var(--teal); color: var(--teal-d); }
.ac-nav a.on, .ac-subnav a.on { background: var(--navy); border-color: var(--navy); color: #fff; }
.ac-subnav { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.ac-subnav a { min-height: 36px; font-size: .85rem; padding: 6px 12px; }
.ac-body { min-width: 0; }
.ac-back { display: inline-flex; align-items: center; gap: 2px; font-size: .88rem; font-weight: 600; text-decoration: none; margin-bottom: 6px; }
.ac-health { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; }
.ac-health .badge { display: inline-flex; align-items: center; gap: 4px; }
.ac-alerts { display: grid; gap: 8px; }
.ac-alert { display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: var(--amber-l); color: var(--amber); border-radius: var(--r); text-decoration: none; font-weight: 600; font-size: .92rem; }
.ac-alert { text-align: left; } .ac-alert > span:nth-child(2) { flex: 1; min-width: 0; }
.ac-alert:hover { filter: brightness(.97); color: var(--amber); }
.ac-two { display: grid; gap: 16px; grid-template-columns: 1fr; align-items: start; }
@media (min-width: 900px) { .ac-two { grid-template-columns: 3fr 2fr; } }
.ac-list { list-style: none; margin: 0; padding: 0; }
.ac-list li { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.ac-list li:last-child { border-bottom: 0; } .ac-list li.tot { font-weight: 700; border-top: 2px solid var(--navy); }
.ac-list a { text-decoration: none; }
.ac-quick { display: flex; flex-wrap: wrap; gap: 8px; }
.ac-filter { display: flex; gap: 16px; align-items: flex-end; flex-wrap: wrap; }
.ac-filter .grow { flex: 1 1 220px; }
.ac-check { align-items: center; min-height: 44px; }
.ac-totline { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; font-size: .92rem; }
.ac-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.ac-inline { display: inline-flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.ac-mini { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.ac-clip { display: block; max-width: 340px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 699px) { .ac-clip { max-width: none; white-space: normal; text-align: right; } }
.num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.table-note { margin-top: 12px; }
.paybar { position: sticky; bottom: calc(var(--tab-h) + var(--sab) + 8px); display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; background: var(--navy); color: #fff; padding: 12px 16px; border-radius: var(--r); box-shadow: var(--sh-3); z-index: 5; }
.paybar[hidden] { display: none; }
.paybar > div { display: flex; gap: 8px; }
.paybar .btn-ghost { color: #fff; }
@media (min-width: 700px) { .paybar { bottom: 16px; } }

/* ---------- chart of accounts ---------- */
.coa-type .card-head b { font-variant-numeric: tabular-nums; }
.coa-rows { padding: 0 0 4px; }
.coa-cat { display: flex; justify-content: space-between; gap: 12px; padding: 12px 20px 6px; background: var(--ivory); font-weight: 700; color: var(--navy); font-size: .92rem; border-top: 1px solid var(--line); }
.coa-cat:first-child { border-top: 0; }
.coa-head { padding: 8px 20px 2px; font-size: .76rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); font-weight: 700; }
.coa-row { display: grid; grid-template-columns: 64px 1fr auto auto; gap: 4px 12px; align-items: center; padding: 6px 20px; border-bottom: 1px solid var(--line); }
.coa-row:last-child { border-bottom: 0; }
.coa-row.off { opacity: .6; }
.coa-code { font-weight: 700; color: var(--navy); font-variant-numeric: tabular-nums; }
.coa-name { min-width: 0; overflow-wrap: anywhere; } .coa-name .badge { margin-left: 4px; font-size: .68rem; }
.coa-bal { text-align: right; }
.coa-acts { display: inline-flex; }
.coa-acts .icon-btn { width: 40px; height: 40px; color: var(--muted); text-decoration: none; } .coa-acts .icon-btn:hover { color: var(--navy); } .coa-acts .icon-btn.danger:hover { color: var(--red); } .coa-acts .static { cursor: help; }
@media (max-width: 699px) {
  .coa-row { grid-template-columns: 52px 1fr auto; padding: 8px 16px; }
  .coa-acts { grid-column: 1 / -1; justify-content: flex-end; margin-top: -4px; }
  .coa-cat, .coa-head { padding-left: 16px; padding-right: 16px; }
}
.ac-side { font-weight: 600; color: var(--teal-d); }

/* ---------- journal grid ---------- */
.jl-head, .jl-row, .jl-total { display: grid; grid-template-columns: minmax(180px, 2fr) minmax(120px, 1.2fr) 130px 130px 120px; gap: 10px; align-items: start; }
.jl-head { font-size: .76rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); font-weight: 700; padding-bottom: 6px; border-bottom: 1px solid var(--line); }
.jl-head .r, .jl-total .r { text-align: right; }
.jl-row { padding: 10px 0; border-bottom: 1px solid var(--line); }
.jl-row input.num, .le-row input.num { text-align: right; }
.jl-acc { display: grid; gap: 8px; min-width: 0; }
.jl-party .pk { margin: 0; }
.jl-lbl { display: none; font-size: .76rem; text-transform: uppercase; color: var(--muted); font-weight: 700; margin-bottom: 4px; }
.jl-tools { display: flex; gap: 4px; justify-content: flex-end; align-items: center; }
.jl-add { padding: 12px 0; }
.jl-total { padding: 10px 0; border-top: 2px solid var(--navy); font-size: 1.05rem; } .jl-total .jl-tl { font-weight: 700; }
.jl-status { padding-top: 8px; display: flex; justify-content: flex-end; }
.jl-diff .badge { display: inline-flex; gap: 4px; align-items: center; font-size: .85rem; padding: 6px 12px; }
@media (max-width: 899px) {
  .jl-head { display: none; }
  .jl-row { grid-template-columns: 1fr 1fr; padding: 14px 0; }
  .jl-acc, .jl-memo { grid-column: 1 / -1; }
  .jl-lbl { display: block; }
  .jl-tools { grid-column: 1 / -1; justify-content: space-between; }
  .jl-total { grid-template-columns: 1fr 1fr; } .jl-total .jl-tl { grid-column: 1 / -1; } .jl-total span:nth-child(2), .jl-total span:nth-child(5) { display: none; }
}
.le-row { display: grid; grid-template-columns: minmax(150px, 2fr) 130px minmax(100px, 1.4fr) 40px; gap: 8px; margin-bottom: 8px; align-items: start; }
.le-foot { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
@media (max-width: 699px) { .le-row { grid-template-columns: 1fr 1fr 40px; } .le-row select, .le-row input[type=text] { grid-column: 1 / -1; } .le-row input.num { grid-column: 1 / 3; } .le-row .icon-btn { grid-column: 3; grid-row: 2; } }

/* ---------- picker (combobox) ---------- */
.pk { position: relative; }
.pk-box { position: relative; }
.pk-input { padding-right: 40px !important; }
.pk-clear { position: absolute; right: 4px; top: 4px; width: 38px; height: 38px; display: grid; place-items: center; border: 0; background: none; color: var(--muted); cursor: pointer; border-radius: 8px; } .pk-clear:hover { color: var(--navy); } .pk-clear[hidden] { display: none; }
.pk-list { position: absolute; z-index: 40; left: 0; right: 0; top: calc(100% + 4px); margin: 0; padding: 4px; list-style: none; max-height: 260px; overflow-y: auto; background: var(--paper); border: 1px solid var(--line-2); border-radius: 10px; box-shadow: var(--sh-3); }
.pk-list[hidden] { display: none; }
.pk-list li { padding: 10px 12px; border-radius: 8px; cursor: pointer; display: flex; flex-direction: column; gap: 1px; font-size: .92rem; }
.pk-list li small { color: var(--muted); font-size: .78rem; }
.pk-list li.on, .pk-list li:hover { background: var(--teal-l); }
.pk-list li.pk-none { cursor: default; color: var(--muted); } .pk-list li.pk-none:hover { background: none; }

/* ---------- report filter bar ---------- */
.rpt-filters .card-body { display: grid; gap: 12px 16px; grid-template-columns: 1fr; align-items: end; }
@media (min-width: 700px) { .rpt-filters .card-body { grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); } }
.rpt-dates { display: grid; gap: 12px; grid-template-columns: 1fr; grid-column: 1 / -1; }
@media (min-width: 700px) { .rpt-dates { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); } }
.rpt-more { display: grid; gap: 12px 16px; grid-template-columns: 1fr; }
@media (min-width: 700px) { .rpt-more { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); } }
.rpt-filters .card-body > .rpt-more { grid-column: 1 / -1; }

/* ---------- report sheet (paper look; also what prints) ---------- */
.rpt-sheet { background: var(--paper); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--sh-1); padding: 20px; min-width: 0; color: #111; }
@media (max-width: 599px) { .rpt-sheet { padding: 14px 12px; } }
.rpt-head { text-align: center; padding-bottom: 14px; margin-bottom: 16px; border-bottom: 2px solid var(--navy); }
.rpt-co { display: flex; flex-direction: column; gap: 0; align-items: center; } .rpt-co b { font-size: 1.05rem; color: var(--navy); letter-spacing: .02em; text-transform: uppercase; } .rpt-co span { font-size: .8rem; color: var(--muted); }
.rpt-title { margin: 8px 0 2px; font-size: 1.35rem; }
.rpt-period { margin: 0; color: var(--muted); font-size: .9rem; font-weight: 600; }
.rpt-printed { display: none; margin: 18px 0 0; font-size: .75rem; color: #555; text-align: right; border-top: 1px solid #ccc; padding-top: 6px; }
.rpt-group { margin: 8px 0 0; font-size: .8rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.rpt-status, .rpt-check { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; }
.rpt-status .badge, .rpt-check .badge { display: inline-flex; align-items: center; gap: 4px; font-size: .85rem; padding: 6px 12px; }
.rpt-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 8px; }
.rpt-kpi { background: var(--ivory); border: 1px solid var(--line); border-radius: 10px; padding: 8px 12px; display: flex; flex-direction: column; min-width: 0; }
.rpt-kpi span { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); font-weight: 600; } .rpt-kpi b { font-size: 1.05rem; color: var(--navy); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.rpt-kpi.bad b { color: var(--red); } .rpt-kpi.good b { color: var(--green); }
.rpt-party { display: flex; justify-content: space-between; gap: 12px; align-items: center; flex-wrap: wrap; padding: 10px 14px; background: var(--ivory); border-radius: 10px; }
.rpt-acct-h { margin: 0 0 8px; font-size: 1rem; } .rpt-acct-h .code, .rpt-tbl .code { font-variant-numeric: tabular-nums; font-weight: 700; color: var(--navy); margin-right: 4px; }
.rpt-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; max-width: 100%; border: 1px solid var(--line); border-radius: 8px; }
.rpt-scroll:focus-visible { outline: 3px solid var(--gold); }
.rpt-tbl { width: 100%; border-collapse: collapse; font-size: .9rem; }
.rpt-tbl caption { text-align: left; font-weight: 700; color: var(--navy); padding: 8px 10px; caption-side: top; }
.rpt-tbl th { background: var(--ivory); color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; padding: 8px 10px; text-align: left; border-bottom: 1px solid var(--line-2); white-space: nowrap; }
.rpt-tbl td { padding: 7px 10px; border-bottom: 1px solid var(--line); vertical-align: top; }
.rpt-tbl th.num, .rpt-tbl td.num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.rpt-tbl td.r { text-align: right; }
.rpt-tbl tr.grp td { background: var(--ivory); font-weight: 700; color: var(--navy); padding-top: 10px; }
.rpt-tbl tr.sec td { background: var(--navy); color: #fff; font-weight: 700; letter-spacing: .05em; font-size: .8rem; }
.rpt-tbl tr.sub td { font-weight: 600; color: var(--muted); font-size: .8rem; padding-left: 16px; }
.rpt-tbl tr.ln td:first-child { padding-left: 16px; }
.rpt-tbl.two td:first-child { width: 100%; }
.rpt-tbl tr.subtot td { font-weight: 600; border-top: 1px solid var(--line-2); }
.rpt-tbl tr.tot td { font-weight: 700; background: #FBF9F3; border-top: 1px solid var(--navy); }
.rpt-tbl tr.gp td { font-weight: 700; color: var(--teal-d); background: var(--teal-l); }
.rpt-tbl tr.net td { font-weight: 800; background: var(--gold-l); border-top: 2px solid var(--navy); border-bottom: 3px double var(--navy); }
.rpt-tbl tr.net.loss td { background: var(--red-l); color: var(--red); }
.rpt-tbl tbody tr:last-child td { border-bottom: 0; }
.rpt-tbl td .badge { margin-left: 4px; }
.rpt-tbl td .small { font-size: .8rem; }
.jv-meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px 20px; margin: 0 0 16px; }
.jv-meta dt { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); font-weight: 600; } .jv-meta dd { margin: 0; overflow-wrap: anywhere; }

/* ---------- reports hub ---------- */
.rpt-cards { display: grid; gap: 12px; grid-template-columns: 1fr; }
@media (min-width: 700px) { .rpt-cards { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1100px) { .rpt-cards { grid-template-columns: repeat(3, 1fr); } }
.rpt-card { display: flex; align-items: center; gap: 14px; padding: 16px; background: var(--paper); border: 1px solid var(--line); border-radius: var(--r); text-decoration: none; color: var(--ink); box-shadow: var(--sh-1); transition: box-shadow .15s, border-color .15s, transform .15s; min-width: 0; }
.rpt-card:hover { border-color: var(--teal); box-shadow: var(--sh-2); color: var(--ink); transform: translateY(-1px); }
.rpt-card-ic { flex: none; width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: var(--teal-l); color: var(--teal-d); }
.rpt-card-t { flex: 1; min-width: 0; display: flex; flex-direction: column; } .rpt-card-t b { color: var(--navy); } .rpt-card-t small { color: var(--muted); line-height: 1.35; }

/* ---------- print (A4) ---------- */
@page { size: A4; margin: 14mm 12mm; }
@media print {
  .rpt-sheet { border: 0; box-shadow: none; padding: 0; border-radius: 0; font-size: 10.5pt; }
  .rpt-printed { display: block; }
  .rpt-scroll { overflow: visible; border: 0; }
  .rpt-tbl { font-size: 9.5pt; } .rpt-tbl th, .rpt-tbl td { padding: 3px 6px; }
  .rpt-tbl tr { break-inside: avoid; }
  .rpt-tbl tr.sec td, .rpt-tbl tr.grp td, .rpt-tbl tr.tot td, .rpt-tbl tr.net td, .rpt-tbl tr.gp td, .rpt-tbl th { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .rpt-acct { break-inside: auto; margin-bottom: 14px; }
  .rpt-kpis { grid-template-columns: repeat(4, 1fr); }
  .tbl-wrap { overflow: visible; }
  .badge { border: 1px solid #999; background: none !important; color: #000 !important; }
  a { color: #000; text-decoration: none; }
  .no-print, .pk { display: none !important; }
  .stack-lg, .stack { gap: 12px; }
}

.ac .stat-value { font-size: clamp(1.1rem, 2.2vw, 1.5rem); overflow-wrap: normal; white-space: nowrap; }
.ac .grid-stats { grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }
.ac-inline.nw { flex-wrap: nowrap; } .ac-inline.nw .btn { white-space: nowrap; }
@media (max-width: 699px) { .ac-inline.nw { flex-wrap: wrap; justify-content: flex-end; } }
.rpt-tbl.led { min-width: 600px; } .rpt-tbl.led td:nth-child(3) { min-width: 220px; }
@media print { .rpt-tbl.led { min-width: 0; } }
