/* Ledger — THE list primitive (Oct 2026). Every list page (Book, Team, Annuities, Requests, Licensing…) is this one look, lifted from the
   Book: a toolbar on the side menu's surface, one white 80% card, a hairline grid table, round tag pills (no dots), a 36px foot.
   Values are the Book's own, measured. Colours are the --lg-* tokens in v3-base.css :root (grays: owner D1) — this file writes no hex.
   (The wrapper is .ledger, not .lg — kit/components.css already has a .lg legend component.)

   CLASS API — add these next to a page's own hook classes (data-*, .nm, .bkt …); never remove a hook. Page CSS only fills slots.
   ─ wrapper ─────────────────────────────────────────────────────────────────────────────────────────────────────────────
   .ledger                 flex column, no gap. When it IS the page root (#page > .ledger) or wears .lg-fill it fills the window
                           under the top bar (desktop); phone: auto height, kit cards. Elsewhere it sizes to its box (embedded).
   .lg-hide                display:none     .lg-sr  visually hidden, kept in the DOM (a focus target, a label)
   ─ toolbar  .lg-bar  (a descendant of .ledger; min 53px: padding 10×16, side-menu tint, 1px rule under) ───────────────
   .lg-pills > .lg-pill    chips, left. h28 · r6 · hairline; aria-pressed="true" or .on = pressed; count in <b>/.num/.ct
   .lg-seg > button (.ic)  segmented control, h32 (period · list/board · roster). pressed = aria-pressed. .ic = 30px icon button
   .lg-title               a plain-noun title in the bar (Licensing)
   .end                    right slot (flex 1, right-aligned, wraps): .lg-search first, then .lg-tb / .lg-seg, primary last
   .lg-search              label > svg.i + input + button.clr   (h32 · flex 1 1 260 · min 120 · max 300 · focus ring)
   .lg-tb                  hairline button/link/select, h32. .on = applied · .pri = accent fill · .io = square icon button ·
                           select.lg-tb = native select in the same box · .i = 16px glyph, .i.s12/.s14 = 14px chevron (ink-3)
   .lg-toks                applied-filter chip row (own row, below). Chip look is the page's.
   ─ card  .lg-card ───────────────────────────────────────────────────────────────────────────────────────────────────────
   .lg-card                flex 1, white 80% + blur, flush (r0, no shadow, overflow hidden). Modifiers: .lg-x = the 56px right-edge
                           fade (fades out as the table is scrolled to its end) · .lg-fixed = a non-growing card above the bar
   .lg-scroll              the scroller inside the card (overflow:auto). .lg-col = a block wrapper joining the flex chain
   .lg-strip               a group strip outside a table (h34, canvas tint, 600 12px ink-3; h2/b/.num inside)
   .lg-empty               one line + one hairline action, centred. .lg-sr kept for the head's title. Loading: tr.skr > td > i.sk (kit skeleton, shimmer)
   ─ table  table.lg-tbl  (do NOT add the kit's .tbl.inset/.sticky/.dense; a plain .tbl may stay) ──────────────────────
   thead th                h36 sticky, white .92, 500 12px ink-3, rules under + right. th.r = right. A sort <button> in a th = label +
                           12px arrows, no chrome; th[aria-sort] marks the active sort.   Modifier on the table: .two = 48px rows
   tbody td                h var(--lg-row) (32px), padding 0 12, rules under + right (last none), 400 13px ink, nowrap + ellipsis, capped at
                           --lg-cell-max (320) / --lg-id-max (240, an identity cell) so a name with no break points never widens a column (B6-4),
                           natural widths (table-layout:auto), scrolls sideways. A list with many columns is a fixed grid in its page CSS (Book, Annuities). td.r / .num = right + tabular. .z .nil .lg-dim = quiet ("—")
   tr.is-sel / .sel / [aria-selected=true]   selected (accent 8% × 70%)      hover / :active = canvas × 70%
   tr.lg-group             group row (h34): td > text + <b>/.num count; .ghr (avatar 18 · .nm · .po · .sm summary)
   .lg-id                  identity cell: .av (22px solid disc, set --lg-avc) · .lg-nm (name 500) · .me "(you)" · trailing .btn
                           .lg-meta = optional second line (400 12px ink-3)      .lg-two = 500 13px over 400 12px ink-3
   .lg-marks > .lg-mark    carrier / logo marks: 24px r6 white ring; a pair overlaps −9px; .lg-mark.x = initials disc;
                           .lg-mark-n = "+N" badge. (.logo inside .lg-tbl takes the same look.)
   .lg-tag (tone)          round pill, h20. Tones: q p ok = pos · n rq req exp td = warn · c no crit od = neg · f = info · ac = accent ·
                           mute wd nu = mute (default). No dots.        .lg-stk > .a .z .more = a stacked pair (+N)
   .lg-stg                 stage = .lg-track (14×4 bars, 6px end dot; tone class q/n/c/rq/ok/no/wd) + .lg-tag, inline
   .lg-chev                trailing chevron cell (36px, ink-5)
   .lg-row / .rqs          grouped grid rows (the contracting seat); .lg-rl .lg-rw = two-line card rows (compact Team)
   ─ foot  .lg-foot  (h36; present only when the list pages) ──────────────────────────────────────────────────────────────
   .lg-range               "1–22 of 79": <b class="num">from–to</b> of <b class="num">total</b>
   .lg-pages / .end        right slot: .lg-pa (24px r6 prev/next) · .lg-pn (page chip; [aria-current=page] = hairline accent) · .lg-gap
   ─ sheet (record drawer; open = .has-sheet on the wrapper) ───────────────────────────────────────────────────────────────
   .lg-scrim  +  aside.insp.lg-sheet > .lg-sheet-h + .lg-sheet-b      (use a <div> header: <header> picks up kit .insp>header)
   Phone (.is-phone): .ledger auto height; .lg-bar = a rounded kit card; .lg-card = a kit card; chips 32px, controls 36px.
   ADOPTING (P1–P3): selectors are `.ledger .lg-x` (0,2,x) — they out-rank the kit's plain .tbl/.btn/.tk/.fbar rules but NOT the kit's
   .tbl.inset / .tbl.sticky / .tbl.dense (0,3,x), so drop those three modifiers from an adopted table; strip the glass classes (pane g2 g3 dense)
   from a bar/card you convert. Page CSS (0,3,x+) still wins over this file — delete the page rules the primitive now carries. Tone `q` is a tag
   tone only; quiet text is .z / .nil / .lg-dim. Helpers: kit/ledger.js (pagerHTML · stackHTML · marksHTML · ownerHTML · skeletonRows · fitLedger ·
   syncEdge). Values: --lg-* in kit/v3-base.css :root.                                                                                    */

/* ---------- wrapper ---------- */
.ledger{display:flex;flex-direction:column;gap:0;min-width:0;min-height:0;color:var(--lg-ink)}
html:not(.is-phone) #page>.ledger,html:not(.is-phone) .ledger.lg-fill{height:calc(100vh - var(--h-band));height:calc(100dvh - var(--h-band));min-height:420px}
html.has-gbanner:not(.is-phone) #page>.ledger,html.has-gbanner:not(.is-phone) .ledger.lg-fill{height:calc(100dvh - var(--h-band) - 56px)}
.ledger .lg-hide{display:none!important}
.ledger .lg-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- toolbar: chips left · .end right (search · hairline buttons · primary) ---------- */
.ledger .lg-bar{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-height:53px;padding:10px 16px;margin:0;border:0;border-radius:0;border-bottom:1px solid var(--lg-line);
  background:var(--chrome);-webkit-backdrop-filter:blur(18px) saturate(1.4);backdrop-filter:blur(18px) saturate(1.4);box-shadow:none}
.ledger .lg-bar::before{display:none}
.ledger .lg-bar>.ptabs,.ledger .lg-bar>.lg-pills,.ledger .lg-bar>.lg-title,.ledger .lg-bar>.lg-seg{flex:none}
.ledger .lg-bar>.end{flex:1 1 0;min-width:0;max-width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;margin-left:auto}
.ledger .lg-title{font:600 15px/1.2 var(--font-ui);color:var(--lg-ink)}
.ledger .lg-title .num{margin-left:6px;font:500 12px/1 var(--font-ui);color:var(--lg-ink-3)}
.ledger .lg-pills{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-width:0;padding:0;margin:0;background:none;box-shadow:none;height:auto}
.ledger .lg-pills .seg-thumb{display:none}
.ledger .lg-pills .lg-pills{display:contents}
.ledger .lg-pill{position:relative;flex:none;display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:1px solid var(--lg-line);border-radius:6px;background:var(--lg-card);box-shadow:none;
  color:var(--lg-ink-3);font:500 12.5px/1 var(--font-ui);white-space:nowrap;cursor:pointer;transition:none}
.ledger .lg-pill .i{width:14px;height:14px;color:var(--lg-ink-5)}
.ledger .lg-pill b,.ledger .lg-pill .num,.ledger .lg-pill .ct{margin:0;font:400 11px/1 var(--font-mono);font-variant-numeric:tabular-nums;color:var(--lg-ink-5)}
.ledger .lg-pill[aria-pressed=true],.ledger .lg-pill.on{border-color:var(--lg-p200);background:color-mix(in srgb,var(--lg-p50) 50%,var(--lg-card));color:var(--lg-ink);font-weight:500;box-shadow:none}
.ledger .lg-pill[aria-pressed=true] b,.ledger .lg-pill[aria-pressed=true] .num,.ledger .lg-pill.on b,.ledger .lg-pill.on .num{color:var(--lg-p)}
@media (hover:hover){.ledger .lg-pill[aria-pressed=false]:hover,.ledger .lg-pill:not(.on):not([aria-pressed]):hover{background:var(--lg-canvas);color:var(--lg-ink)}}
.ledger .lg-search{position:relative;display:flex;align-items:center;flex:1 1 260px;width:auto;min-width:120px;max-width:300px;height:32px;margin:0;padding:0 30px 0 32px;border-radius:6px;background:var(--lg-card);box-shadow:inset 0 0 0 1px var(--lg-line);font:400 13px/1.2 var(--font-ui);color:var(--lg-ink)}
.ledger .lg-search>.i{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;margin:0;color:var(--lg-ink-3)}
.ledger .lg-search input{width:100%;min-width:0;height:100%;margin:0;padding:0;border:0;outline:0;background:none;font:400 13px/1.2 var(--font-ui);color:var(--lg-ink)}
.ledger .lg-search input::placeholder{color:var(--lg-ink-3);opacity:1}
/* focus: a search that is also a kit .fld (the Book's) keeps the kit's focus ring; a plain one draws its own */
.ledger .lg-search:not(.fld):focus-within{box-shadow:inset 0 0 0 1px var(--lg-p200),0 0 0 3px color-mix(in srgb,var(--lg-p) 18%,transparent)}
.ledger .lg-search .clr{position:absolute;right:8px;top:50%;transform:translateY(-50%);margin:0}
.ledger .lg-tb{display:inline-flex;flex:none;align-items:center;justify-content:center;gap:6px;height:32px;min-width:0;max-width:none;padding:0 10px;border:1px solid var(--lg-line);border-radius:6px;background:var(--lg-card);box-shadow:none;
  color:var(--lg-ink);font:500 13px/1 var(--font-ui);white-space:nowrap;text-decoration:none;cursor:pointer;transition:none;transform:none}
.ledger .lg-tb .i{width:16px;height:16px}
.ledger .lg-tb .i.s12,.ledger .lg-tb .i.s14{width:14px;height:14px;color:var(--lg-ink-3)}
.ledger .lg-tb .s2{color:var(--lg-ink-3);font-weight:400}
.ledger .lg-tb.on,.ledger .lg-tb[aria-pressed=true]{border-color:var(--lg-p200);background-color:var(--lg-p50);color:var(--lg-p700)}
.ledger .lg-tb[aria-expanded=true]:not(.on){border-color:var(--lg-line);background-color:var(--lg-canvas);color:var(--lg-ink)}
@media (hover:hover){.ledger .lg-tb:hover{background-color:var(--lg-canvas)}} /* colour only: select.lg-tb carries its chevron as a background-image, which a shorthand would wipe */
.ledger .lg-tb.pri{border-color:transparent;background:var(--lg-p);color:var(--on-accent);padding:0 12px}
.ledger .lg-tb.pri .i{color:var(--on-accent)}
@media (hover:hover){.ledger .lg-tb.pri:hover{background:color-mix(in srgb,var(--lg-p) 88%,black)}}
.ledger .lg-tb.io{width:32px;padding:0}
.ledger select.lg-tb{appearance:none;-webkit-appearance:none;padding-right:26px;background:var(--lg-card) var(--lg-chev) right 8px center/12px no-repeat}
/* a segmented in the bar (period · roster · list/board): hairline track, h32 */
.ledger .lg-seg{display:inline-flex;align-items:center;flex:none;height:32px;padding:3px;gap:2px;border:1px solid var(--lg-line);border-radius:6px;background:var(--lg-card);box-shadow:none}
.ledger .lg-seg>button{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;height:24px;padding:0 10px;border:0;border-radius:4px;background:none;box-shadow:none;color:var(--lg-ink-3);font:500 12.5px/1 var(--font-ui);white-space:nowrap;cursor:pointer;transition:none}
.ledger .lg-seg>button .i{width:14px;height:14px;stroke-width:2.1}
.ledger .lg-seg>button b,.ledger .lg-seg>button .num{font:400 11px/1 var(--font-mono);color:var(--lg-ink-5)}
.ledger .lg-seg>button[aria-pressed=true]{background:var(--lg-canvas);color:var(--lg-ink);font-weight:500;box-shadow:none}
.ledger .lg-seg>button[aria-pressed=true] .num{color:var(--lg-ink-3)}
.ledger .lg-seg>button.ic{width:30px;padding:0}
.ledger .lg-seg .seg-thumb{display:none}
/* applied-filter chips: their own row under the controls */
.ledger .lg-bar .lg-toks{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px;margin:0}
.ledger .lg-bar .lg-toks:empty{display:none}

/* ---------- the card: one white plane, flush, fills the rest ---------- */
.ledger .lg-card{position:relative;flex:1 1 0%;min-height:0;display:flex;flex-direction:column;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;overflow:hidden;
  background:rgb(255 255 255/.8);-webkit-backdrop-filter:blur(18px) saturate(1.4);backdrop-filter:blur(18px) saturate(1.4)}
.ledger .lg-card::before{display:none}
.ledger .lg-card.lg-x{timeline-scope:--lg-x}
.ledger .lg-card.lg-x .lg-scroll{scroll-timeline:--lg-x inline}
.ledger .lg-card.lg-x::after{content:"";position:absolute;top:0;right:0;bottom:0;width:56px;pointer-events:none;z-index:3;background:linear-gradient(to left,rgb(255 255 255/.95),rgb(255 255 255/0))}
@supports (animation-timeline:scroll()){
  .ledger .lg-card.lg-x::after{animation:lg-edge linear both;animation-timeline:--lg-x}
  @keyframes lg-edge{0%,92%{opacity:1}100%{opacity:0}}
}
.ledger .lg-scroll{flex:1 1 0%;min-height:0;overflow:auto;overscroll-behavior:contain;padding:0;max-width:none;scrollbar-width:thin}
.ledger .lg-scroll:focus-visible{outline:0}
/* a fixed section above the bar (admin Needs setup): the same plane */
.ledger .lg-card.lg-fixed{flex:none;overflow:visible;--lg-row:44px}
.ledger .lg-card.lg-fixed .lg-scroll{flex:none;overflow:visible}
.ledger .lg-card.lg-fixed .lg-tbl tbody td{overflow:visible}
/* page-level block wrappers between the card and its scroller join the flex chain */
.ledger .lg-col{display:flex!important;flex-direction:column;flex:1 1 0%;min-height:0;padding:0;margin:0}
/* a group strip outside a table (admin Needs setup head · the contracting seat's stage groups) */
.ledger .lg-strip{display:flex;align-items:center;gap:6px;min-height:34px;margin:0;padding:0 12px;background:var(--lg-strip);border-bottom:1px solid var(--lg-line);font:600 12px/1 var(--font-ui);color:var(--lg-ink-3)}
.ledger .lg-strip h2{margin:0;font:600 12px/1 var(--font-ui);letter-spacing:0;color:var(--lg-ink-3)}
.ledger .lg-strip h2 b,.ledger .lg-strip .ct,.ledger .lg-strip .num{height:auto;min-width:0;margin-left:6px;padding:0;border:0;background:none;box-shadow:none;font:500 12px/1 var(--font-mono);color:var(--lg-ink-3)}
.ledger .lg-strip .cr-section-mark{display:none}
.ledger .lg-strip .adq-oldest,.ledger .lg-strip .end{margin-left:auto;font:400 12px/1 var(--font-ui);color:var(--lg-ink-3)}
/* the contracting seat's grid rows: Book type, 1px rules, two-line cells kept */
.ledger .rqs{list-style:none;margin:0;padding:0}
.ledger .lg-row{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(108px,1fr) minmax(118px,.9fr) minmax(0,1.15fr) 36px;column-gap:0;align-items:center;min-height:48px;padding:0;margin:0;border-bottom:1px solid var(--lg-line);background:none;box-shadow:none;color:var(--lg-ink);font:400 13px/1.35 var(--font-ui);transition:none}
.ledger .lg-row>*{min-width:0;align-self:stretch;align-content:center;padding:6px 12px;border-right:1px solid var(--lg-line)}
.ledger .lg-row>*:last-child{border-right:0}
.ledger .lg-row>.req{display:grid}
.ledger .lg-row>.rq-date,.ledger .lg-row>.ns{display:grid;gap:1px}
.ledger .lg-row>.chev{display:block;width:14px;height:14px;align-self:center;justify-self:end;padding:0;margin-right:10px;border:0;color:var(--lg-ink-5);stroke-width:2}
@media (hover:hover){.ledger .lg-row:hover{background:color-mix(in srgb,var(--lg-canvas) 70%,var(--lg-card))}}
.ledger .lg-row.is-sel{background:color-mix(in srgb,var(--lg-p50) 70%,var(--lg-card));box-shadow:none}
.ledger .lg-row .req{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;align-items:center;min-width:0}
.ledger .lg-row .req b{font:500 13px/18px var(--font-ui);color:var(--lg-ink)}
.ledger .lg-row .req span,.ledger .lg-row small,.ledger .lg-row .t2,.ledger .lg-row .rq-date small{font:400 12px/16px var(--font-ui);color:var(--lg-ink-3)}
.ledger .lg-row .logo,.ledger .lg-row .nolg{width:24px;height:24px;border-radius:6px;background:var(--lg-card);box-shadow:0 0 0 1.5px var(--lg-card),0 0 0 2px rgb(16 30 42/.08);grid-row:span 2}
.ledger .lg-row .stgw{display:flex;flex-direction:row;align-items:center;gap:8px;min-width:0}
.ledger .lg-row .stgw>.lg-tag{display:inline-flex;width:auto;flex:none;font-weight:500}
.ledger .lg-row .rq-date b,.ledger .lg-row .ns b{font:400 13px/18px var(--font-ui);color:var(--lg-ink)}
.ledger .lg-row .ns.you b{font-weight:500}
.ledger .lg-row .rq-date small.ag2,.ledger .lg-row .rq-date small.ag3,.ledger .lg-row .rq-date small.ag4{color:var(--lg-warn)}
/* the compact Team list (shell.isCompact: rows instead of the table) — Book two-line rows in the same card */
.ledger .lg-rl{list-style:none;margin:0;padding:0}
.ledger .lg-rw{display:grid;grid-template-columns:22px minmax(0,1fr) auto;column-gap:10px;align-items:center;height:48px;padding:0 12px;border-bottom:1px solid var(--lg-line);color:var(--lg-ink);transition:none}
.ledger .lg-rw .av{width:22px;height:22px;border-radius:50%;background:var(--lg-avc,var(--lg-mute));color:var(--on-accent);font:500 8.5px/1 var(--font-ui);box-shadow:none}
.ledger .lg-rw .t{display:grid;gap:0;min-width:0}
.ledger .lg-rw .l1{display:flex;align-items:center;gap:6px;min-width:0}
.ledger .lg-rw .l1 b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 13px/18px var(--font-ui);color:var(--lg-ink)}
.ledger .lg-rw .l1 .me{font:400 13px/18px var(--font-ui);color:var(--lg-ink-5)}
.ledger .lg-rw .t small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:400 12px/16px var(--font-ui);color:var(--lg-ink-3)}
.ledger .lg-rw .t small .lg-tag{height:16px;padding:0 6px;font-size:11px;vertical-align:1px}
.ledger .lg-rw .v{font:400 13px/1 var(--font-mono);font-variant-numeric:tabular-nums;color:var(--lg-ink);text-align:right;white-space:nowrap}
.ledger .lg-rw .v.q{color:var(--lg-ink-5)}
@media (hover:hover){.ledger .lg-rw:hover{background:color-mix(in srgb,var(--lg-canvas) 70%,var(--lg-card))}}
.ledger .lg-pinv{display:flex;align-items:center;gap:12px;min-height:40px;padding:0 12px;border-bottom:1px solid var(--lg-line)}
.ledger .lg-pinv>span:first-child{display:flex;align-items:baseline;gap:8px;min-width:0}
.ledger .lg-pinv b{font:500 13px/18px var(--font-ui);color:var(--lg-ink)}
.ledger .lg-pinv small{font:400 12px/16px var(--font-ui);color:var(--lg-ink-3)}
.ledger .lg-pinv .a{margin-left:auto;display:flex;gap:2px}

/* ---------- the table: a grid of hairlines ---------- */
.ledger .lg-tbl{width:100%;min-width:100%;border-collapse:separate;border-spacing:0;table-layout:auto;font:400 13px/1.35 var(--font-ui);color:var(--lg-ink)}
.ledger .lg-tbl col{width:auto}
.ledger .lg-tbl thead th{position:sticky;top:0;z-index:2;width:auto;height:36px;padding:0 12px;background:rgb(255 255 255/.92);color:var(--lg-ink-3);font:500 12px/1 var(--font-ui);text-align:left;white-space:nowrap;
  letter-spacing:0;text-transform:none;vertical-align:middle;overflow:hidden;text-overflow:ellipsis;border:0;border-bottom:1px solid var(--lg-line);border-right:1px solid var(--lg-line);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
.ledger .lg-tbl thead th:last-child{border-right:0}
.ledger .lg-tbl thead th.r{text-align:right}
.ledger .lg-tbl thead th>button,.ledger .lg-tbl thead th .sortb{display:inline-flex;align-items:center;gap:4px;height:auto;padding:0;margin:0;border:0;background:none;box-shadow:none;font:inherit;color:inherit;cursor:pointer}
.ledger .lg-tbl thead th>button .i,.ledger .lg-tbl thead th .sortb .i{width:12px;height:12px;color:var(--lg-ink-5)}
.ledger .lg-tbl thead th[aria-sort]:not([aria-sort=none])>button,.ledger .lg-tbl thead th[aria-sort]:not([aria-sort=none]) .sortb{color:var(--lg-ink)}
.ledger .lg-tbl thead th[aria-sort]:not([aria-sort=none])>button .i,.ledger .lg-tbl thead th[aria-sort]:not([aria-sort=none]) .sortb .i{color:var(--lg-p)}
.ledger .lg-tbl thead th.r>button{justify-content:flex-end;width:100%}
.ledger .lg-tbl tbody td{width:auto;height:var(--lg-row);padding:0 12px;border:0;border-bottom:1px solid var(--lg-line);border-right:1px solid var(--lg-line);background:none;color:var(--lg-ink);font:400 13px/1.35 var(--font-ui);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;transition:none}
.ledger .lg-tbl tbody td:last-child{border-right:0}
/* Text with no break points (a 200-character name, an id) never sets a column's width: a body cell stops growing at --lg-cell-max and an
   identity cell (name · owner) at --lg-id-max, and what is longer ends in "…" at the cell's own edge (nowrap + ellipsis above), so every other
   column keeps its place on the card. Group and "show more" rows span the table (colspan) and are not capped; a card that opens its cells
   (.lg-fixed) is not clipped. A page that wants a different cap sets the custom property on its card. B6-4. */
.ledger .lg-tbl tbody td:where(:not([colspan])){max-width:var(--lg-cell-max,320px)}
.ledger .lg-tbl tbody td:where(:not([colspan])):has(>.lg-id){max-width:var(--lg-id-max,240px)}
.ledger .lg-card.lg-fixed .lg-tbl tbody td{max-width:none}
.ledger .lg-tbl.two tbody td{height:var(--lg-row-2)}
.ledger .lg-tbl tbody tr{cursor:default;outline:0}
.ledger .lg-tbl tbody tr:not(.lg-group):hover td{background:color-mix(in srgb,var(--lg-canvas) 70%,var(--lg-card))}
.ledger .lg-tbl tbody tr:not(.lg-group):is(.is-sel,.sel,[aria-selected=true]) td{background:color-mix(in srgb,var(--lg-p50) 70%,var(--lg-card));box-shadow:none}
.ledger .lg-tbl tbody tr:active td{background:color-mix(in srgb,var(--lg-canvas) 70%,var(--lg-card))}
.ledger .lg-tbl .r{text-align:right;font-variant-numeric:tabular-nums}
.ledger .lg-tbl .num{font-variant-numeric:tabular-nums;color:inherit;font-weight:400}
.ledger .lg-tbl .z,.ledger .lg-tbl .nil,.ledger .lg-tbl .q2,.ledger .lg-dim{color:var(--lg-ink-5)}
.ledger .lg-tbl td a{color:inherit;text-decoration:none}
.ledger .lg-tbl td a:hover{color:inherit}
.ledger .lg-tbl b{font-weight:500}
/* identity cell: optional person mark · name 500 · optional meta line */
.ledger .lg-id{display:flex;align-items:center;gap:8px;min-width:0;font-weight:400}
.ledger .lg-id .av,.ledger .lg-av{display:inline-flex;flex:none;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--lg-avc,var(--lg-mute));color:var(--on-accent);font:500 8.5px/1 var(--font-ui);box-shadow:none}
.ledger .lg-id .av.none{background:none;border:1px dashed color-mix(in srgb,var(--lg-ink-5) 60%,transparent)}
.ledger .lg-id .lg-nm,.ledger .lg-id a,.ledger .lg-id b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;font:500 13px/20px var(--font-ui);color:var(--lg-ink)}
.ledger .lg-id .lg-nm.none{font-weight:500;color:var(--lg-ink-5)}
.ledger .lg-id .me{flex:none;font:400 13px/20px var(--font-ui);color:var(--lg-ink-5)}
.ledger .lg-id .btn{flex:none;height:24px;margin-left:auto}
.ledger .lg-meta{display:block;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:400 12px/16px var(--font-ui);color:var(--lg-ink-3)}
.ledger .lg-meta:empty{display:none}
.ledger .lg-two{display:grid;gap:0;min-width:0}
.ledger .lg-two>:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 13px/18px var(--font-ui);color:var(--lg-ink)}
.ledger .lg-two>:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:400 12px/16px var(--font-ui);color:var(--lg-ink-3)}
/* marks: a 24px logo on white with a ring; a pair overlaps; the empty slot stays */
.ledger .lg-marks{position:relative;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}
.ledger .lg-tbl .logo,.ledger .lg-mark{width:24px;height:24px;flex:none;margin:0;border-radius:6px;background:var(--lg-card);box-shadow:0 0 0 1.5px var(--lg-card),0 0 0 2px rgb(16 30 42/.08);object-fit:contain;vertical-align:middle}
.ledger .lg-tbl .lg-mark+.lg-mark,.ledger .lg-tbl .logo+.logo,.ledger .lg-marks .lg-mark+.lg-mark{margin-left:-9px}
.ledger .lg-mark.x{display:inline-grid;place-items:center;background:var(--lg-canvas);color:var(--lg-ink-3);font:600 9.5px/1 var(--font-ui);letter-spacing:.02em}
.ledger .lg-marks .lg-mark-n{position:absolute;margin:0;padding:0 3px;border-radius:999px;background:var(--lg-card);box-shadow:0 0 0 1px rgb(16 30 42/.1);font:600 9px/14px var(--font-mono);color:var(--lg-ink-3);transform:translate(14px,9px)}
.ledger .lg-tbl .nolg,.ledger .lg-tbl .pos-ic{display:inline-grid;place-items:center;width:24px;height:24px;flex:none;border-radius:6px;background:var(--lg-canvas);color:var(--lg-ink-3);box-shadow:none}
.ledger .lg-tbl .cn{display:flex;align-items:center;gap:8px;min-width:0;font-weight:400}
.ledger .lg-tbl .cn a,.ledger .lg-tbl .cn b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;color:var(--lg-ink)}
/* status: the Book's round pill — the colour carries the state, no dot */
.ledger .lg-tag{--c:var(--lg-mute);display:inline-flex;align-items:center;gap:0;height:20px;max-width:100%;padding:0 9px;border-radius:999px;background:color-mix(in srgb,var(--c) 12%,var(--lg-card));color:color-mix(in srgb,var(--c) 55%,var(--lg-ink));
  font:500 12px/1 var(--font-ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;text-decoration:none}
.ledger .lg-tag::before{display:none}
.ledger .lg-tag.q,.ledger .lg-tag.p,.ledger .lg-tag.ok{--c:var(--lg-pos)}
.ledger .lg-tag.n,.ledger .lg-tag.rq,.ledger .lg-tag.req,.ledger .lg-tag.exp,.ledger .lg-tag.td{--c:var(--lg-warn)}
.ledger .lg-tag.c,.ledger .lg-tag.no,.ledger .lg-tag.crit,.ledger .lg-tag.od{--c:var(--lg-neg)}
.ledger .lg-tag.f{--c:var(--lg-info)}
.ledger .lg-tag.ac{--c:var(--lg-p)}
.ledger .lg-tag.wd,.ledger .lg-tag.mute,.ledger .lg-tag.nu{--c:var(--lg-mute)}
.ledger .lg-stk{display:inline-flex;align-items:center;gap:0;max-width:100%}
.ledger .lg-stk>.a,.ledger .lg-stk>.z{position:relative;display:inline-flex;flex:none}
.ledger .lg-stk>.a{z-index:2}.ledger .lg-stk>.a>*{box-shadow:0 0 0 2px var(--lg-card),2px 0 4px rgb(16 30 42/.10)}
.ledger .lg-stk>.z{z-index:1;margin-left:-10px;color:var(--lg-ink)}.ledger .lg-stk>.z>*{padding-left:17px}
.ledger .lg-stk>.more{margin-left:8px;font:500 12px/1 var(--font-mono);color:var(--lg-ink-3)}
/* a stage: track then pill, inline */
.ledger .lg-stg{display:inline-flex;align-items:center;gap:8px;min-width:0;height:auto;vertical-align:middle}
.ledger .lg-track{display:inline-flex!important;gap:3px;align-items:center;height:auto;vertical-align:middle;grid-template-columns:none}
.ledger .lg-track>i{position:static;display:block;width:14px;height:4px;border-radius:2px;background:var(--lg-faint);box-shadow:none;transition:none}
.ledger .lg-track>i::after{display:none}
.ledger .lg-track>i:last-child{width:6px;height:6px;border-radius:50%}
.ledger .lg-track>i.on,.ledger .lg-track>i.cur{width:14px;height:4px;background:var(--c,var(--lg-p))}
.ledger .lg-track>i:last-child.on,.ledger .lg-track>i:last-child.cur{width:6px;height:6px}
.ledger .lg-track.rq,.ledger .lg-track.n{--c:var(--lg-warn)}
.ledger .lg-track.ok,.ledger .lg-track.q{--c:var(--lg-pos)}
.ledger .lg-track.no,.ledger .lg-track.c{--c:var(--lg-neg)}
.ledger .lg-track.wd{--c:var(--lg-mute)}
.ledger .crq-attention{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--lg-warn);margin-right:6px;vertical-align:middle}
/* group rows · chevron · show-more */
.ledger .lg-tbl tbody tr.lg-group td{height:34px;padding:0 12px;background:var(--lg-strip);font:600 12px/1 var(--font-ui);color:var(--lg-ink-3);border-right-color:transparent;white-space:nowrap}
.ledger .lg-tbl tbody tr.lg-group:hover td{background:var(--lg-strip)}
.ledger .lg-tbl tbody tr.lg-group td b,.ledger .lg-tbl tbody tr.lg-group td .num{margin-left:6px;font:500 12px/1 var(--font-mono);color:var(--lg-ink-3)}
.ledger .lg-tbl tbody tr.lg-group .ghr{display:flex;align-items:center;gap:8px;min-width:0}
.ledger .lg-tbl tbody tr.lg-group .ghr .av{width:18px;height:18px;border-radius:50%;background:var(--lg-avc,var(--lg-mute));color:var(--on-accent);font-size:8px;box-shadow:none}
.ledger .lg-tbl tbody tr.lg-group .ghr .nm{font:600 12px/1 var(--font-ui);color:var(--lg-ink)}
/* a group row spans the table: it adds nothing to a column's width (max-width 0), and a long group name ends in "…" while the count and summary keep their place (B6-4) */
.ledger .lg-tbl tbody tr.lg-group td[colspan]{max-width:0}
.ledger .lg-tbl tbody tr.lg-group .ghr .nm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ledger .lg-tbl tbody tr.lg-group .ghr :is(.av,.po,.sm,small){flex:none}
.ledger .lg-tbl tbody tr.lg-group .ghr small,.ledger .lg-tbl tbody tr.lg-group .ghr .po{font:400 12px/1 var(--font-ui);color:var(--lg-ink-5)}
.ledger .lg-tbl tbody tr.lg-group .ghr .sm{margin-left:auto;font:400 12px/1 var(--font-ui);color:var(--lg-ink-3);font-variant-numeric:tabular-nums}
.ledger .lg-tbl .lg-chev{width:36px;padding:0 10px;color:var(--lg-ink-5);text-align:right}
.ledger .lg-tbl .lg-chev .i{display:inline-block;width:14px;height:14px;vertical-align:middle;stroke-width:2}
.ledger .lg-tbl tbody tr.more td,.ledger .lg-tbl tbody tr.gh.more td{height:36px;padding:0 12px;background:none}
.ledger .lg-tbl tbody tr.more td .btn{height:24px;padding:0;background:none;box-shadow:none;font:500 12.5px/1 var(--font-ui);color:var(--lg-p700)}
/* skeleton rows keep the grid */
/* (the bars keep the kit's skeleton tint and shimmer — kit/loading.css — as the Book's do) */
.ledger .lg-tbl .sk{height:10px}
.ledger .lg-tbl .ska{width:22px;height:22px}
/* legacy two-line name (Contracting · Licensing) */
.ledger .lg-tbl .lg-name{display:grid;gap:2px;min-width:0}
.ledger .lg-tbl .lg-name b{overflow:hidden;text-overflow:ellipsis;font:500 13px/1.25 var(--font-ui);color:var(--lg-ink)}
.ledger .lg-tbl .lg-name small{overflow:hidden;text-overflow:ellipsis;font:400 12px/1.25 var(--font-ui);color:var(--lg-ink-3)}

/* ---------- foot ---------- */
.ledger .lg-foot{position:static;flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:12px;height:auto;min-height:36px;padding:6px 12px;margin:0;border:0;border-top:1px solid var(--lg-line);box-shadow:none;background:var(--lg-card);
  font:500 12.5px/1 var(--font-ui);color:var(--lg-ink-3)}
.ledger .lg-foot .lg-range{font:500 12.5px/1 var(--font-ui);color:var(--lg-ink-3)}
.ledger .lg-foot .num,.ledger .lg-foot b{font:500 12.5px/1 var(--font-mono);font-variant-numeric:tabular-nums;color:var(--lg-ink)}
.ledger .lg-foot .s2{color:var(--lg-ink-3)}
.ledger .lg-foot .end,.ledger .lg-foot .lg-pages{margin-left:auto;display:flex;align-items:center;gap:2px}
.ledger .lg-foot .btn,.ledger .lg-pa{display:inline-flex;align-items:center;justify-content:center;width:24px;min-width:24px;height:24px;padding:0;border:0;border-radius:6px;background:none;box-shadow:none;color:var(--lg-ink-3);font:500 12px/1 var(--font-ui);cursor:pointer}
.ledger .lg-foot .btn .i,.ledger .lg-pa .i{width:14px;height:14px;color:inherit}
.ledger .lg-foot .btn:disabled,.ledger .lg-pa:disabled{opacity:.3;cursor:default}
.ledger .lg-pn{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border:1px solid transparent;border-radius:6px;background:none;box-shadow:none;color:var(--lg-ink-3);font:500 11.5px/1 var(--font-mono);font-variant-numeric:tabular-nums;cursor:pointer}
.ledger .lg-pn[aria-current=page]{border-color:var(--lg-p200);background:color-mix(in srgb,var(--lg-p50) 50%,var(--lg-card));color:var(--lg-p)}
.ledger .lg-gap{padding:0 4px;font:500 12px/1 var(--font-ui);color:var(--lg-ink-3)}
@media (hover:hover){.ledger .lg-pn:not([aria-current]):hover,.ledger .lg-pa:not(:disabled):hover,.ledger .lg-foot .btn:not(:disabled):hover{background:var(--lg-canvas)}}

/* ---------- empty / error inside the card ---------- */
.ledger .lg-empty{flex:1;display:grid;place-items:center;align-content:center;gap:12px;min-height:180px;padding:24px;text-align:center;font:400 13px/1.4 var(--font-ui);color:var(--lg-ink-3)}
.ledger .lg-empty p{margin:0;font:400 13px/1.4 var(--font-ui);color:var(--lg-ink-3)}
.ledger .lg-empty .btn,.ledger .lg-empty .lg-tb{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:1px solid var(--lg-line);border-radius:6px;background:var(--lg-card);box-shadow:none;color:var(--lg-ink);font:500 13px/1 var(--font-ui)}
.ledger .lg-empty .btn.pri{border-color:transparent;background:var(--lg-p);color:var(--on-accent)}

/* ---------- the record sheet: right edge, over a dimmed page (open/close via kit .insp[data-state]) ---------- */
.lg-scrim{display:none;position:fixed;inset:0;z-index:59;background:rgba(0,0,0,.18)}
.has-sheet>.lg-scrim,.lg-scrim.on{display:block;animation:lg-fade .2s ease both}
@keyframes lg-fade{from{opacity:0}}
.lg-sheet{position:fixed;inset:0 0 0 auto;z-index:60;display:flex;flex-direction:column;width:min(760px,calc(100vw - var(--w-side,0px) - 24px));border-radius:0;background:var(--lg-card);box-shadow:-1px 0 0 var(--lg-line),-8px 0 24px rgba(0,0,0,.06)}
.lg-sheet-h{flex:none;display:flex;align-items:center;gap:8px;min-height:52px;padding:0 12px 0 20px;border-bottom:1px solid var(--lg-line)}
.lg-sheet-h .end{margin-left:auto;display:flex;align-items:center;gap:6px}
.lg-sheet-b{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}
.is-phone .lg-sheet{width:100%}
@media (prefers-reduced-motion:reduce){.lg-scrim{animation:none}}

/* ---------- phone: the kit cards stay; chips and pills take the Book's shapes ---------- */
.is-phone .ledger{height:auto;gap:12px}
.is-phone .ledger .lg-bar{border-radius:var(--r-card);border-bottom:0;padding:12px;min-height:0;background:var(--g2);box-shadow:var(--sh-2)}
.is-phone .ledger .lg-bar>.end{flex-basis:100%;justify-content:flex-start}
.is-phone .ledger .lg-search{flex:1 1 100%;max-width:none;height:36px;font-size:1rem}
.is-phone .ledger .lg-search input{font-size:1rem}
.is-phone .ledger .lg-tb,.is-phone .ledger .lg-seg{height:36px}
.is-phone .ledger .lg-seg>button{height:28px}
.is-phone .ledger .lg-pill{height:32px;padding:0 12px;font-size:.8125rem}
.is-phone .ledger .lg-card{flex:none;overflow:visible;border-radius:var(--r-card);box-shadow:var(--sh-3)}
.is-phone .ledger .lg-scroll{flex:none;overflow:visible}
.is-phone .ledger .lg-col{flex:none;display:block!important}

/* ---------- forced colours: the selected row keeps the system highlight pair on everything inside it ---------- */
@media (forced-colors:active){
  .ledger .lg-tbl tbody tr:is(.is-sel,.sel,[aria-selected=true]) td,.ledger .lg-tbl tbody tr:is(.is-sel,.sel,[aria-selected=true]) td *{color:HighlightText}
  .ledger .lg-tbl tbody tr:is(.is-sel,.sel,[aria-selected=true]) .lg-tag{background:transparent;box-shadow:inset 0 0 0 1px HighlightText}
}
