/* Accountin app: the website's navy and green, in a working-screen density. One definition per selector. */
:root {
  --navy: #011b46; --ink2: #3a4560; --muted: #667085; --line: #e4e7ee; --paper: #fff; --page: #f5f7fa;
  --green: #03684e; --green-dk: #024d3a; --green-lt: #e6f2ec; --amber: #b86e00; --amber-lt: #fff3dc; --red: #b3261e; --red-lt: #fdeceb;
  --head: "Nunito", "Inter", system-ui, sans-serif;
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body { font: 400 15px/1.55 "Inter", system-ui, -apple-system, "Segoe UI", sans-serif; color: var(--navy); background: var(--page); -webkit-font-smoothing: antialiased; }
a { color: var(--green); }
h1, h2, h3 { font-family: var(--head); font-weight: 900; line-height: 1.15; margin: 0 0 .5em; }
h1 { font-size: 1.7rem; } h2 { font-size: 1.25rem; } h3 { font-size: 1.05rem; font-weight: 800; }
p { margin: 0 0 1em; }
.muted { color: var(--muted); }
.small { font-size: .85rem; }

.btn { display: inline-flex; align-items: center; gap: .4em; background: var(--green); color: #fff; border: 2px solid var(--green); border-radius: 999px; padding: .6em 1.2em; font: 700 .92rem/1.2 "Inter", sans-serif; text-decoration: none; cursor: pointer; }
.btn:hover { background: var(--green-dk); border-color: var(--green-dk); }
.btn:disabled { opacity: .5; cursor: default; }
.btn-ghost { background: #fff; color: var(--green); }
.btn-ghost:hover { background: var(--green-lt); }
.btn-navy { background: var(--navy); border-color: var(--navy); }

.field { display: grid; gap: 6px; font-weight: 600; font-size: .9rem; margin-bottom: 14px; }
.field input, .field select, .field textarea { font: inherit; font-weight: 400; padding: 10px 12px; border: 1px solid #cdd3de; border-radius: 9px; background: #fff; color: var(--navy); }
.field input:focus, .field select:focus, .field textarea:focus { outline: 2px solid var(--green); outline-offset: 1px; border-color: var(--green); }
.error { background: var(--red-lt); color: var(--red); border-radius: 9px; padding: 10px 12px; margin-bottom: 14px; font-weight: 600; }
.notice { background: var(--green-lt); color: var(--green-dk); border-radius: 9px; padding: 10px 12px; margin-bottom: 14px; font-weight: 600; }

/* sign-in pages */
.auth { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: radial-gradient(800px 480px at 90% 0%, rgba(3,104,78,.10), transparent 70%), var(--page); }
.auth-card { width: 100%; max-width: 420px; background: #fff; border: 1px solid var(--line); border-radius: 18px; padding: 32px; box-shadow: 0 22px 50px rgba(1,27,70,.08); }
.auth-card .logo { height: 30px; margin-bottom: 24px; }
.auth-switch { margin-top: 16px; font-size: .9rem; }
.qr { display: grid; place-items: center; margin: 12px 0 16px; }
.qr img { width: 180px; height: 180px; }
.code { font: 600 .85rem ui-monospace, Menlo, monospace; background: var(--page); padding: 8px 10px; border-radius: 8px; word-break: break-all; }

/* app shell */
.shell { display: grid; grid-template-columns: 220px minmax(0, 1fr); min-height: 100vh; }
.side { background: #fbfbfc; border-right: 1px solid var(--line); padding: 20px 14px; position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; }
.side .logo { height: 26px; margin: 0 8px 26px; }
.side nav a { display: block; padding: 9px 10px; border-radius: 8px; color: var(--ink2); font-weight: 600; text-decoration: none; margin-bottom: 2px; }
.side nav a:hover, .side nav a[aria-current] { background: var(--green-lt); color: var(--green); }
.side .who { margin-top: auto; font-size: .8rem; color: var(--muted); padding: 0 8px; }
.side .who form { margin-top: 6px; }
.side .who button { background: none; border: 0; padding: 0; color: var(--green); font: inherit; font-weight: 600; cursor: pointer; }
.main { padding: 28px 36px 60px; min-width: 0; }
.bar { display: flex; align-items: center; gap: 14px; margin-bottom: 22px; flex-wrap: wrap; }
.bar h1 { margin: 0; }
.bar .sp { flex: 1; }
.panel { background: #fff; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; margin-bottom: 20px; }
.panel-h { padding: 14px 18px; border-bottom: 1px solid var(--line); font-weight: 700; display: flex; align-items: center; gap: 10px; }
.panel-b { padding: 18px; }
table.t { width: 100%; border-collapse: collapse; }
.t th { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); text-align: left; padding: 10px 14px; border-bottom: 1px solid var(--line); }
.t td { padding: 11px 14px; border-bottom: 1px solid var(--line); vertical-align: top; }
.t tr:last-child td { border-bottom: 0; }
.t td.num, .t th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.chip { display: inline-block; font-size: .78rem; font-weight: 700; padding: 3px 10px; border-radius: 999px; background: var(--page); color: var(--muted); }
.chip.ok { background: var(--green-lt); color: var(--green); }
.chip.warn { background: var(--amber-lt); color: var(--amber); }
.chip.bad { background: var(--red-lt); color: var(--red); }
.grid2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; }
.empty { padding: 40px 18px; text-align: center; color: var(--muted); }
.tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--line); margin: -8px 0 22px; overflow-x: auto; }
.tabs a { padding: 10px 14px; color: var(--ink2); font-weight: 600; text-decoration: none; border-bottom: 2px solid transparent; white-space: nowrap; }
.tabs a[aria-current] { color: var(--green); border-bottom-color: var(--green); }
/* year-end workflow: import, mapping, accounts */
.list { margin: 6px 0 0; padding-left: 20px; font-weight: 400; }
.list li { margin-bottom: 4px; }
.choice { border: 0; padding: 0; }
.choice legend { padding: 0; margin-bottom: 6px; }
.choice label { display: block; font-weight: 400; margin-bottom: 4px; }
.check { display: flex; gap: 8px; align-items: flex-start; margin-bottom: 14px; font-size: .92rem; }
.check input { margin-top: 4px; }
.notes { margin-top: 10px; }
.notes summary { cursor: pointer; color: var(--ink2); font-weight: 600; font-size: .9rem; }
.scroll-x { overflow-x: auto; }
.t.map td { padding: 8px 12px; }
.t.map .why { max-width: 320px; color: var(--ink2); }
.row-bad td { background: var(--red-lt); }
.picker { display: grid; gap: 6px; min-width: 260px; }
.picker select, .t .in { font: inherit; font-size: .88rem; padding: 6px 8px; border: 1px solid #cdd3de; border-radius: 7px; background: #fff; color: var(--navy); width: 100%; }
.picker-sub { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.t .in.num { text-align: right; min-width: 90px; }
.t.people td { padding: 6px 8px; vertical-align: middle; }
.link-btn { background: none; border: 0; padding: 0 0 0 8px; color: var(--green); font: inherit; font-size: .85rem; font-weight: 700; cursor: pointer; }
.sticky-actions { position: sticky; bottom: 0; background: var(--page); padding: 12px 0; border-top: 1px solid var(--line); }
.acc-grid { display: grid; grid-template-columns: minmax(0, 380px) minmax(0, 1fr); gap: 0 20px; align-items: start; }
.panel-h .sp { flex: 1; }
.tabs { display: inline-flex; gap: 4px; margin-left: 8px; }
.tabs a { padding: 4px 10px; border-radius: 999px; font-size: .85rem; text-decoration: none; color: var(--ink2); }
.tabs a[aria-current] { background: var(--green-lt); color: var(--green); }
.preview { display: block; width: 100%; height: 78vh; border: 0; background: #fff; }
fieldset.panel-b { border: 0; margin: 0; min-width: 0; }
@media (max-width: 860px) {
  .acc-grid { grid-template-columns: minmax(0, 1fr); }
  .picker-sub { grid-template-columns: minmax(0, 1fr); }
  .shell { grid-template-columns: minmax(0, 1fr); }
  .side { position: static; height: auto; flex-direction: row; align-items: center; gap: 12px; overflow-x: auto; }
  .side .logo { margin: 0; }
  .side nav { display: flex; gap: 4px; }
  .side .who { margin: 0 0 0 auto; }
  .main { padding: 20px 16px 48px; }
  .grid2 { grid-template-columns: minmax(0, 1fr); }
}

/* ---------------------------------------------------------------- practice layer (lib/practice-ops: /deadlines, /team, /billing, /export, /portal) */
.po-filters { display: flex; flex-wrap: wrap; gap: 0 14px; align-items: flex-end; }
.po-filters .field { min-width: 180px; }
.po-filters > div { margin-bottom: 14px; }
.po-inline { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.po-inline .in { width: auto; }
.po-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 8px; }
.po-copy { width: 100%; font: 400 .85rem/1.5 ui-monospace, Menlo, monospace; padding: 10px; margin-top: 8px; border: 1px solid #cdd3de; border-radius: 9px; background: #fff; color: var(--navy); }
.po-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; margin-bottom: 20px; }
.po-cards > .panel { margin-bottom: 0; }
.po-card { display: block; color: inherit; text-decoration: none; }
a.po-card:hover { border-color: var(--green); }
.po-current { border-color: var(--green); box-shadow: inset 0 0 0 1px var(--green); }
.po-stat { background: var(--page); border-radius: 10px; padding: 12px 14px; }
.po-big { font: 900 1.4rem/1.2 var(--head); font-variant-numeric: tabular-nums; }
.po-thread { padding: 14px 18px; display: grid; gap: 10px; max-height: 60vh; overflow-y: auto; }
.po-msg { max-width: 80%; background: var(--page); border-radius: 12px; padding: 8px 12px; }
.po-msg.mine { justify-self: end; background: var(--green-lt); }
.po-body { white-space: pre-wrap; overflow-wrap: anywhere; }

/* bookkeeping and reports (bank, journals, chart, reports) */
.books-nav { display: flex; flex-wrap: wrap; gap: 4px; margin: -10px 0 18px; }
.books-nav a { padding: 4px 12px; border-radius: 999px; font-size: .86rem; font-weight: 600; text-decoration: none; color: var(--ink2); background: #fff; border: 1px solid var(--line); }
.books-nav a[aria-current] { background: var(--green-lt); color: var(--green); border-color: var(--green-lt); }
.books-filters { display: flex; flex-wrap: wrap; gap: 0 14px; align-items: flex-end; }
.books-filters .field { margin-bottom: 10px; min-width: 150px; }
.books-filters .check { margin-bottom: 18px; }
.books-fields { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 0 14px; }
.books-wide { grid-column: span 2; }
.books-inline { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; }
.books-inline .field, .books-inline .check { margin-bottom: 0; }
.books-in { color: var(--green); font-weight: 700; }
.books-out { color: var(--red); font-weight: 700; }
.books-t td { padding: 7px 14px; }
.books-row-section td { font-weight: 800; padding-top: 16px; border-bottom: 0; }
.books-row-heading td { font-weight: 700; color: var(--ink2); border-bottom: 0; }
.books-row-subtotal td { font-weight: 700; border-top: 1px solid var(--line); }
.books-row-total td { font-weight: 800; border-top: 2px solid var(--navy); background: var(--page); }
.books-row-note td { color: var(--muted); font-style: italic; }
.books-report-h { align-items: flex-start; }
.books-code-row { display: grid; grid-template-columns: minmax(200px, 300px) minmax(0, 1fr); gap: 8px 16px; padding: 12px 18px; border-bottom: 1px solid var(--line); }
.books-code-row:last-child { border-bottom: 0; }
.books-code-form { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; }
.books-code-form .in { width: auto; min-width: 120px; flex: 1 1 140px; }
.books-code-form .check { margin: 0; }
.books-code-form .btn { padding: .45em 1em; }
.books-code-more { grid-column: 2; display: flex; gap: 12px; align-items: center; }
.books-code-more form { display: inline; }
.books-code-more .link-btn { padding: 0; }
.books-match { grid-column: 1 / -1; background: var(--page); border-radius: 9px; padding: 10px 12px; display: grid; gap: 6px; }
.books-recsum { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin: 6px 0 12px; }
.books-recsum div { background: var(--page); border-radius: 10px; padding: 10px 12px; display: grid; gap: 2px; }
.books-recsum strong { font-size: 1.15rem; font-variant-numeric: tabular-nums; }
@media (max-width: 860px) {
  .books-code-row { grid-template-columns: minmax(0, 1fr); }
  .books-code-more { grid-column: 1; }
  .books-wide { grid-column: auto; }
}
@media print {
  .side, .tabs, .books-nav, .no-print, .bar .btn, .sticky-actions { display: none !important; }
  .shell { display: block; }
  .main { padding: 0; }
  body { background: #fff; font-size: 11pt; }
  .panel { border: 0; border-radius: 0; margin: 0 0 12pt; overflow: visible; }
  .books-report .panel-h { border-bottom: 1px solid #000; padding: 0 0 6pt; font-size: 13pt; }
  .books-t td, .books-t th { padding: 3pt 6pt; }
  .books-t tr { break-inside: avoid; }
  .books-row-total td { background: none; border-top: 1.5pt solid #000; }
  .scroll-x { overflow: visible; }
  a { color: inherit; text-decoration: none; }
}

/* ---------------------------------------------------------------- sales and purchases (lib/trade, /sales, /purchases, /contacts) */
.trade-nav { display: flex; flex-wrap: wrap; gap: 4px; margin: -6px 0 18px; }
.trade-nav a { padding: 5px 12px; border-radius: 999px; font-size: .88rem; font-weight: 600; color: var(--ink2); text-decoration: none; background: #fff; border: 1px solid var(--line); }
.trade-nav a[aria-current] { background: var(--green-lt); color: var(--green); border-color: var(--green-lt); }
.trade-grid3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 16px; }
.trade-grid4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0 12px; }
.trade-stats { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 18px; }
.trade-stats > div { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 10px 16px; min-width: 140px; display: grid; gap: 2px; }
.trade-stats strong { font-size: 1.15rem; font-variant-numeric: tabular-nums; }
.trade-filter { font-size: .88rem; font-weight: 600; color: var(--ink2); text-decoration: none; padding: 3px 10px; border-radius: 999px; }
.trade-filter.on { background: var(--green-lt); color: var(--green); }
.trade-lines td, .trade-batch td { padding: 6px 6px; vertical-align: middle; }
.trade-lines .in, .trade-batch .in { min-width: 90px; }
.trade-lines .trade-qty { min-width: 60px; max-width: 80px; }
.trade-batch input[type="date"] { min-width: 130px; }
.trade-static { padding: 10px 0; font-weight: 700; }
.trade-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 14px; }
.trade-actions form { margin: 0; }
.trade-dl { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 4px 16px; margin: 0 0 12px; }
.trade-dl dt { color: var(--muted); font-size: .88rem; }
.trade-dl dd { margin: 0; }
.trade-row-actions { display: flex; gap: 10px; align-items: center; justify-content: flex-end; white-space: nowrap; }
.trade-row-actions form { margin: 0; }
.trade-filters { display: flex; flex-wrap: wrap; gap: 0 14px; align-items: end; }
.trade-filters .field { margin-bottom: 0; }
.trade-total td { font-weight: 700; border-top: 2px solid var(--line); }
.trade-inline { display: inline-flex; gap: 6px; align-items: center; margin-left: 12px; font-weight: 400; font-size: .85rem; }
.trade-inline input { font: inherit; padding: 4px 6px; border: 1px solid #cdd3de; border-radius: 7px; }
.trade-logo { max-height: 60px; max-width: 220px; object-fit: contain; display: block; margin: 4px 0 8px; }
.trade-error-text { color: var(--red); font-weight: 600; }
@media (max-width: 860px) {
  .trade-grid3, .trade-grid4 { grid-template-columns: minmax(0, 1fr); }
}

/* ---- VAT module (lib/vat, /clients/[id]/vat, /approve/vat) ---- */
.vat-boxes td.vat-n { width: 36px; font-weight: 800; color: var(--muted); }
.vat-boxes tr.vat-box5 td { background: var(--green-lt); font-weight: 700; }
.vat-facts { display: flex; flex-wrap: wrap; gap: 12px 36px; }
.vat-checks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px 18px; }
.vat-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.vat-approve { max-width: 620px; }
.vat-headline { font-family: var(--head); font-size: 1.35rem; font-weight: 900; margin: 6px 0 14px; }
.vat-off { font-weight: 500; }
@media (max-width: 860px) { .vat-checks { grid-template-columns: minmax(0, 1fr); } }

/* ---------------------------------------------------------------- Accountin Plus (lib/plus, /crm, /proposals, /signing, /jobs, /requests, /feed, public /proposal and /sign) */
.side .plus-group { margin: 14px 10px 4px; font-size: .7rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.plus-nav { display: flex; flex-wrap: wrap; gap: 4px; margin: -6px 0 18px; }
.plus-nav a { padding: 5px 12px; border-radius: 999px; font-size: .88rem; font-weight: 600; color: var(--ink2); text-decoration: none; background: #fff; border: 1px solid var(--line); }
.plus-nav a[aria-current] { background: var(--green-lt); color: var(--green); border-color: var(--green-lt); }
.plus-board { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(230px, 1fr); gap: 12px; overflow-x: auto; padding-bottom: 8px; margin-bottom: 20px; }
.plus-col { background: #fbfbfc; border: 1px solid var(--line); border-radius: 12px; padding: 10px; min-height: 120px; }
.plus-col-h { display: flex; justify-content: space-between; gap: 8px; font-weight: 700; font-size: .9rem; margin-bottom: 8px; }
.plus-card { display: block; background: #fff; border: 1px solid var(--line); border-radius: 10px; padding: 9px 11px; margin-bottom: 8px; color: inherit; text-decoration: none; font-size: .9rem; }
a.plus-card:hover { border-color: var(--green); }
.plus-card form { margin-top: 6px; }
.plus-card select { font: inherit; font-size: .8rem; padding: 3px 6px; border: 1px solid #cdd3de; border-radius: 6px; max-width: 100%; }
.plus-timeline { list-style: none; margin: 0; padding: 0; }
.plus-timeline li { padding: 10px 18px; border-bottom: 1px solid var(--line); }
.plus-timeline li:last-child { border-bottom: 0; }
.plus-steps { list-style: none; margin: 0; padding: 0; }
.plus-steps li { display: flex; gap: 10px; align-items: flex-start; padding: 9px 18px; border-bottom: 1px solid var(--line); }
.plus-steps li:last-child { border-bottom: 0; }
.plus-steps form { margin: 0; }
.plus-done { text-decoration: line-through; color: var(--muted); }
.plus-letter { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 22px 26px; margin-bottom: 18px; overflow-wrap: anywhere; }
.plus-letter h2 { font-size: 1.05rem; margin-top: 1.2em; }
.plus-letter table { border-collapse: collapse; margin: 0 0 1em; }
.plus-letter td { padding: 4px 14px 4px 0; border-bottom: 1px solid var(--line); }
.plus-letter .banner, .plus-banner { background: var(--amber-lt); color: var(--amber); border-radius: 9px; padding: 10px 12px; margin-bottom: 14px; font-weight: 600; }
.plus-public { max-width: 880px; }
.plus-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; margin: 16px 0; }
.plus-option { border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; background: #fff; }
.plus-option.rec { border-color: var(--green); box-shadow: inset 0 0 0 1px var(--green); }
.plus-option ul { list-style: none; padding: 0; margin: 10px 0 0; font-size: .9rem; }
.plus-option li { display: flex; justify-content: space-between; gap: 8px; padding: 3px 0; }
.plus-heat { font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.plus-heat.ok { background: var(--green-lt); }
.plus-heat.warn { background: var(--amber-lt); }
.plus-heat.bad { background: var(--red-lt); }
.plus-lines td { padding: 6px; vertical-align: middle; }
.plus-lines .in { min-width: 70px; }
.plus-in { font: inherit; font-size: .88rem; padding: 6px 8px; border: 1px solid #cdd3de; border-radius: 7px; background: #fff; color: var(--navy); max-width: 100%; }
.plus-in.grow { flex: 1 1 200px; }
/* ---- Advisory (lib/advisory, lib/forecast, /clients/[id]/advisory, /approve/bank-feed) ---- */
.adv-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; margin-bottom: 20px; }
.adv-kpi { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; display: grid; gap: 3px; }
.adv-kpi strong { font: 900 1.2rem/1.2 var(--head); font-variant-numeric: tabular-nums; }
.adv-chart { margin: 0; }
.adv-chart svg { width: 100%; height: auto; display: block; }
.adv-grid { stroke: var(--line); stroke-width: 1; }
.adv-zero { stroke: var(--ink2); stroke-width: 1.2; }
.adv-limit { stroke: var(--red); stroke-width: 1.4; stroke-dasharray: 5 4; }
.adv-axis { font: 500 11px "Inter", system-ui, sans-serif; fill: var(--muted); }
.adv-label { font: 600 12px "Inter", system-ui, sans-serif; fill: var(--navy); }
.adv-bar { fill: var(--green); opacity: .85; }
.adv-bar-neg { fill: var(--red); opacity: .8; }
.adv-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: .85rem; color: var(--ink2); margin-top: 6px; }
.adv-legend span { display: inline-flex; align-items: center; gap: 6px; }
.adv-insights { margin: 0; padding: 12px 18px 12px 36px; display: grid; gap: 8px; }
.adv-insights li { padding-left: 4px; }
.adv-sev-high { color: var(--red); font-weight: 600; }
.adv-sev-medium { color: var(--amber); font-weight: 600; }
.adv-sev-info { color: var(--navy); }
.adv-tick { width: 26px; height: 26px; border: 2px solid var(--green); border-radius: 7px; background: #fff; color: var(--green); font-weight: 900; cursor: pointer; line-height: 1; }
.adv-tick[aria-pressed="true"] { background: var(--green); color: #fff; }
.adv-tick:disabled { opacity: .5; cursor: default; }
.adv-grid-t td { padding: 4px 4px; }
.adv-grid-t .in.num { min-width: 78px; }
.adv-grid-name { min-width: 220px; white-space: nowrap; font-size: .88rem; }
.adv-scenario { border-top: 1px solid var(--line); background: var(--page); }
.adv-ai { margin-top: 12px; background: var(--page); border-radius: 10px; padding: 12px 14px; }
.adv-notes-text { white-space: pre-wrap; overflow-wrap: anywhere; }
.adv-agenda h3 { margin-top: 10px; }
.adv-sections { padding-left: 20px; }
.adv-sections ul, .adv-agenda .grid2 ul { padding-left: 18px; margin: 4px 0 10px; }
.adv-pack { max-width: 900px; }
.adv-pack-head { border-bottom: 2px solid var(--navy); margin-bottom: 16px; padding-bottom: 8px; }
.adv-lines { height: 220px; background: repeating-linear-gradient(to bottom, transparent 0, transparent 27px, var(--line) 27px, var(--line) 28px); }
.adv-print-head, .adv-print-only { display: none; }
@media print {
  .adv-print-head, .adv-print-only { display: block; }
  .adv-notes textarea, .adv-notes .field { display: none; }
  .adv-kpis { grid-template-columns: repeat(4, 1fr); gap: 6pt; }
  .adv-kpi { border: 1px solid #999; border-radius: 0; padding: 4pt 6pt; break-inside: avoid; }
  .adv-chart { break-inside: avoid; }
  .adv-bar, .adv-bar-neg { opacity: 1; }
  .adv-pack-notes { break-inside: avoid; }
  .adv-sev-high, .adv-sev-medium { color: #000; }
}

/* ---- Book extras (lib/fx, lib/stock, lib/projects, lib/receipts: /bank/currencies, /sales/stock, /chart/projects, /reports/projects, /purchases/read-receipt) ---- */
.fx-nav { margin-top: -6px; }
.receipt-img { display: block; max-width: 100%; max-height: 70vh; border: 1px solid var(--line); border-radius: 9px; }
/* ---- Moving books onto Accountin (lib/migrate, /clients/[id]/migrate, /migrate) ---- */
.mg-steps { display: flex; flex-wrap: wrap; gap: 4px; margin: -8px 0 18px; }
.mg-steps a { padding: 5px 12px; border-radius: 999px; font-size: .88rem; font-weight: 600; color: var(--ink2); text-decoration: none; }
.mg-steps a[aria-current] { background: var(--green-lt); color: var(--green); }
.mg-inline { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }
.mg-upload { display: grid; gap: 6px; min-width: 220px; font-size: .85rem; }
.mg-new { display: grid; grid-template-columns: 90px minmax(140px, 1fr) minmax(160px, 1fr) 120px; gap: 6px; min-width: 560px; }
.mg-preview td { font-size: .82rem; white-space: nowrap; max-width: 220px; overflow: hidden; text-overflow: ellipsis; }
.mg-runner { display: grid; gap: 10px; justify-items: start; }
.mg-runner .notice, .mg-runner .error { margin: 0; }
.mg-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin-bottom: 20px; }
.mg-kpi { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; display: grid; gap: 3px; color: var(--navy); text-decoration: none; }
.mg-kpi strong { font: 900 1.3rem/1.2 var(--head); }
.mg-kpi[aria-current] { border-color: var(--green); background: var(--green-lt); }
@media print { .mg-noprint, .mg-steps { display: none; } }
/* ---- CT600 supplementary pages (lib/ct/ct600a.ts, /clients/[id]/tax/ct600): box numbers, CT600A repayment rows ---- */
.ct-boxes .ct-box { width: 56px; color: var(--muted, #666); font-variant-numeric: tabular-nums; white-space: nowrap; }
.ct600a-move { display: flex; gap: 6px; margin-bottom: 4px; flex-wrap: wrap; }
/* ---- Client bookkeeping (lib/clientbooks, /portal/books, /clients/[id]/client-books, /approve/quote, /approve/pay). Phone first. ---- */
.cb-app { min-height: 100vh; display: flex; flex-direction: column; background: var(--page); }
.cb-top { position: sticky; top: 0; z-index: 5; display: flex; align-items: center; gap: 10px; padding: 10px 16px; padding-top: max(10px, env(safe-area-inset-top)); background: #fff; border-bottom: 1px solid var(--line); }
.cb-top .sp { flex: 1; }
.cb-brand { display: inline-flex; align-items: center; gap: 8px; color: var(--navy); font-weight: 800; text-decoration: none; min-width: 0; }
.cb-brand span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cb-back { font-weight: 600; font-size: .9rem; text-decoration: none; }
.cb-install { padding: .4em .9em; font-size: .82rem; }
.cb-main { flex: 1; width: 100%; max-width: 680px; margin: 0 auto; padding: 18px 16px 96px; }
.cb-tabs { position: fixed; left: 0; right: 0; bottom: 0; z-index: 5; display: flex; overflow-x: auto; background: #fff; border-top: 1px solid var(--line); padding-bottom: env(safe-area-inset-bottom); }
.cb-tabs a { flex: 1 0 auto; min-width: 72px; padding: 12px 10px; text-align: center; font-weight: 700; font-size: .82rem; color: var(--ink2); text-decoration: none; border-top: 3px solid transparent; }
.cb-tabs a[aria-current] { color: var(--green); border-top-color: var(--green); }
.cb-h1 { font-size: 1.45rem; margin: 0 0 14px; }
.cb-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.cb-bar .cb-h1 { margin: 0; }
.cb-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 18px; }
.cb-action { display: grid; gap: 2px; background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 14px; min-height: 76px; color: var(--navy); text-decoration: none; }
.cb-action span { font-size: .82rem; color: var(--muted); }
.cb-action:hover { border-color: var(--green); }
.cb-list { list-style: none; margin: 0; padding: 0; }
.cb-list > li { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--line); }
.cb-list > li:last-child { border-bottom: 0; }
.cb-list > li.cb-li-col { flex-direction: column; align-items: stretch; gap: 8px; }
.cb-li-link { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; color: inherit; text-decoration: none; min-height: 44px; }
.cb-li-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.cb-list .num, .cb-li-row .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.cb-kv { display: flex; justify-content: space-between; gap: 12px; padding: 6px 0; }
.cb-kv > span:first-child { color: var(--muted); }
.cb-kv-total { border-top: 1px solid var(--line); margin-top: 6px; padding-top: 10px; font-size: 1.05rem; }
.cb-lines-view { margin: 10px 0; border-top: 1px solid var(--line); }
.cb-lines-view > li { padding: 8px 0; }
.cb-stack { display: grid; gap: 10px; margin: 0 0 18px; }
.cb-stack > .btn, .cb-stack form .btn { justify-content: center; width: 100%; }
.cb-form { display: grid; gap: 0; }
.cb-form .field input, .cb-form .field select, .cb-form .field textarea { font-size: 16px; min-height: 44px; }
.cb-buttons { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 4px; }
.cb-buttons .btn { flex: 1 1 140px; justify-content: center; min-height: 46px; }
.cb-inline { margin: 0; }
.cb-inline-form { max-width: 380px; }
.cb-link { display: grid; gap: 6px; margin-bottom: 14px; }
.cb-link .btn { justify-self: start; }
.cb-lines { display: grid; gap: 12px; margin-bottom: 14px; }
.cb-line { border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px 4px; margin: 0; background: #fff; min-width: 0; }
.cb-line legend { padding: 0 4px; }
.cb-row2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 12px; align-items: end; }
.cb-line-foot { display: flex; align-items: center; justify-content: flex-end; gap: 12px; padding-bottom: 8px; }
.cb-line-foot > span:first-child { margin-right: auto; }
.cb-total { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 8px; font-size: 1.1rem; padding: 4px 2px; }
.cb-new { border-left: 3px solid var(--green-lt); padding-left: 12px; }
.cb-snap { display: grid; gap: 12px; }
.cb-big { justify-content: center; min-height: 56px; font-size: 1rem; width: 100%; }
.cb-busy { opacity: .6; pointer-events: none; }
.cb-preview { display: block; max-width: 100%; max-height: 320px; margin: 0 auto 14px; border-radius: 10px; border: 1px solid var(--line); }
.cb-txn { margin-bottom: 12px; }
.cb-txn .cb-li-row { margin-bottom: 10px; }
.cb-in { color: var(--green); }
.cb-out { color: var(--navy); }
.cb-why { margin: -8px 0 12px; }
.cb-filter { max-width: 520px; }
.cb-review .t td { vertical-align: middle; }
.cb-narrow { max-width: 680px; }
.cb-row-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; }
@media (min-width: 861px) {
  .cb-top { order: -2; }
  .cb-tabs { position: static; justify-content: center; gap: 4px; border-top: 0; border-bottom: 1px solid var(--line); order: -1; padding: 6px 16px; }
  .cb-tabs a { flex: 0 0 auto; border-top: 0; border-radius: 999px; padding: 6px 14px; }
  .cb-tabs a[aria-current] { background: var(--green-lt); }
  .cb-main { padding-bottom: 60px; }
  .cb-actions { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 420px) {
  .cb-row2 { grid-template-columns: minmax(0, 1fr); }
}
/* ---- Opportunity Engine (app/(app)/opportunities): an opportunity's page, main column and a narrow side column ---- */
.oe-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 340px); gap: 0 20px; align-items: start; }
@media (max-width: 860px) { .oe-grid { grid-template-columns: minmax(0, 1fr); } }
