*{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:light;--paper:oklch(100% 0 0);--card:oklch(98.5% .002 255);--row-hover:oklch(97.2% .004 255);--ink:oklch(23.5% .02 265);--muted:oklch(45% .018 265);--rule:oklch(91% .004 255);--rule-strong:oklch(72% .018 265);--accent:oklch(54.5% .16 264);--accent-hover:oklch(47% .17 264);--accent-soft:oklch(95% .03 264);--on-accent:oklch(99% .005 264);--credit:oklch(50% .09 160);--debit:oklch(53% .17 25);--credit-bg:oklch(96.5% .02 160);--debit-bg:oklch(96% .03 25);--band:var(--card);--band-ink:var(--ink);--band-muted:var(--muted);--band-rule:var(--rule);--band-credit:var(--credit);--band-debit:var(--debit);--band-amber:var(--accent);--mono:ui-monospace, "SF Mono", "Cascadia Code", "JetBrains Mono", "IBM Plex Mono", Menlo, Consolas, monospace;--s1:.25rem;--s2:.5rem;--s3:.75rem;--s4:1rem;--s5:1.5rem;--s6:2rem;--s7:3rem;--z-thead:2}html{background:var(--paper)}body{font-family:var(--mono);font-variant-numeric:tabular-nums;font-kerning:normal;color:var(--ink);font-size:14px;line-height:1.5}.wrap{max-width:1320px;padding:var(--s6) var(--s5) var(--s7);margin:0 auto}header{justify-content:space-between;align-items:flex-end;gap:var(--s3);padding-bottom:var(--s4);border-bottom:3px double var(--rule-strong);flex-wrap:wrap;display:flex}h1{letter-spacing:.38em;font-size:1.05rem;font-weight:700}.plate .sub{color:var(--muted);letter-spacing:.14em;text-transform:uppercase;margin-top:var(--s1);font-size:.72rem}.asof{color:var(--muted);letter-spacing:.06em;font-size:.72rem}.controls{gap:var(--s6);padding:var(--s4) 0;border-bottom:1px solid var(--rule);margin-bottom:var(--s5);flex-wrap:wrap;align-items:flex-end;display:flex}.ctl{align-items:flex-end;gap:var(--s3);flex-wrap:wrap;display:flex}.ctl.push{margin-left:auto}.ctl label{text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin-bottom:.35rem;font-size:.64rem;display:block}.status{color:var(--muted);letter-spacing:.02em;padding-bottom:.55em;font-size:.68rem}input,select,button{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink);background:var(--paper);border:1px solid var(--rule);border-radius:2px;padding:.45em .55em;font-size:.84rem;transition:border-color .14s ease-out,background-color .14s ease-out,color .14s ease-out}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);outline:none}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button{cursor:pointer;text-transform:uppercase;letter-spacing:.1em;background:var(--accent);color:var(--on-accent);border-color:var(--accent);padding:.68em 1.2em;font-size:.7rem;font-weight:700}@media (hover:hover){button:hover{background:var(--accent-hover);border-color:var(--accent-hover)}}button:active{background:oklch(43% .165 264);border-color:oklch(43% .165 264)}#startBal{text-align:right;width:140px}.band{background:var(--band);color:var(--band-ink);border:1px solid var(--rule);border-top:3px double var(--rule-strong);padding:var(--s5) var(--s4) var(--s4);margin-bottom:var(--s6)}.band .top{gap:var(--s5);grid-template-columns:minmax(230px,300px) 1fr;align-items:stretch;display:grid}.position{padding-right:var(--s5);border-right:1px solid var(--band-rule);flex-direction:column;justify-content:center;display:flex}.position .lbl{text-transform:uppercase;letter-spacing:.16em;color:var(--band-muted);font-size:.66rem}.position .big{margin-top:var(--s2);letter-spacing:.01em;font-size:2.3rem;font-weight:700;line-height:1.15}.position .big.neg{color:var(--band-debit)}.position .sub{color:var(--band-muted);margin-top:var(--s2);font-size:.72rem;line-height:1.45}.chart{min-width:0}.chart svg{width:100%;height:auto;display:block}.footing{gap:var(--s4);margin-top:var(--s4);padding-top:var(--s4);border-top:1px solid var(--band-rule);grid-template-columns:repeat(4,1fr);display:grid}.footing dt{text-transform:uppercase;letter-spacing:.14em;color:var(--band-muted);margin-bottom:var(--s1);text-wrap:balance;font-size:.6rem;line-height:1.4}.footing dd{font-size:1.02rem;font-weight:700}.footing dd.cr{color:var(--band-credit)}.footing dd.dr{color:var(--band-debit)}.footing dd.amber{color:var(--band-amber)}.footing .sub{color:var(--band-muted);margin-top:.1rem;font-size:.68rem;font-weight:400}.desk{gap:var(--s4);margin-bottom:var(--s6);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.journal{background:var(--card);border:1px solid var(--rule);border-top:3px double var(--rule-strong);padding:var(--s4) var(--s4) var(--s3)}.jhead{justify-content:space-between;align-items:baseline;gap:var(--s3);padding-bottom:var(--s3);margin-bottom:var(--s4);border-bottom:1px solid var(--rule);display:flex}.jhead h2{text-transform:uppercase;letter-spacing:.16em;font-size:.72rem;font-weight:700}.journal.credits h2{color:var(--credit)}.journal.debits h2{color:var(--debit)}.jmeta{color:var(--muted);white-space:nowrap;font-size:.66rem}form .row{gap:var(--s2);grid-template-columns:minmax(0,1fr) 104px 126px 146px auto;align-items:end;display:grid}form .field label{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:.3rem;font-size:.62rem;display:block}form input,form select{width:100%}.defs{margin-top:var(--s3)}.def{justify-content:space-between;align-items:baseline;gap:var(--s2);border-bottom:1px dotted var(--rule);padding:.4rem 0;font-size:.8rem;display:flex}.def .nm{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.def .meta{white-space:nowrap;color:var(--muted);flex:none;align-items:baseline;gap:.3em;font-size:.72rem;display:flex}.def input.ed{border:none;border-bottom:1px dotted var(--rule-strong);color:inherit;appearance:textfield;background:0 0;border-radius:0;padding:0 .1em;font-size:.74rem}.def input.ed::-webkit-outer-spin-button{-webkit-appearance:none}.def input.ed::-webkit-inner-spin-button{-webkit-appearance:none}.def input.ed:focus{border-bottom-style:solid;border-bottom-color:var(--ink);box-shadow:none;outline:none}.def input.ed.amt{text-align:right;width:84px}.def input.ed.dt{width:128px;color:var(--muted)}.def .x{color:var(--muted);letter-spacing:0;text-transform:none;background:0 0;border:none;margin:-.2rem 0 -.2rem .35em;padding:.2rem .45rem;font-size:.9rem;font-weight:400}@media (hover:hover){.def .x:hover{color:var(--debit);background:0 0}}.none{color:var(--muted);padding:var(--s2) 0;font-size:.74rem;font-style:italic}.ledger-wrap{background:var(--card);border:1px solid var(--rule);overflow-x:auto}table{border-collapse:collapse;width:100%}thead th{z-index:var(--z-thead);background:var(--card);text-transform:uppercase;letter-spacing:.14em;color:var(--muted);text-align:left;border-bottom:2px solid var(--rule-strong);padding:.7em .9em;font-size:.64rem;position:sticky;top:0}th.num,td.num{text-align:right}td{border-bottom:1px solid var(--rule);vertical-align:top;padding:.55em .9em}tbody tr:not(.month):hover td{background:var(--row-hover)}td.date{white-space:nowrap;width:128px;color:var(--muted);font-size:.78rem}td.date b{color:var(--ink);font-weight:400}td.bal{white-space:nowrap;width:150px;font-weight:700}.entry{justify-content:space-between;gap:var(--s3);display:flex}.entry+.entry{margin-top:var(--s1)}.entry .amt{white-space:nowrap}td.in .amt{color:var(--credit)}td.out .amt,tr.neg td.bal{color:var(--debit)}tr.low td{background:var(--accent-soft)}tr.low.neg td{background:var(--debit-bg)}tbody tr.low:hover td{background:oklch(94.5% .035 264)}tbody tr.low.neg:hover td{background:oklch(94.5% .032 25)}tr.month td{background:oklch(95.5% .004 255);padding:.45em .9em}tr.month td .mrow{justify-content:space-between;gap:var(--s4);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);font-size:.64rem;display:flex}tr.month td .mrow .mnet{letter-spacing:.06em}tr.opening td{color:var(--muted);font-style:italic}tr.opening td.bal{color:var(--ink);font-style:normal}tfoot td{border-bottom:none}tfoot tr.totals td{border-top:2px solid var(--rule-strong);color:var(--muted);font-size:.8rem}tfoot tr.totals .amt{font-weight:700}tfoot tr.closing td{border-top:3px double var(--rule-strong);padding-top:.7em;font-weight:700}.empty td{text-align:center;color:var(--muted);padding:var(--s6);font-style:italic}footer{margin-top:var(--s5);padding-top:var(--s4);border-top:1px solid var(--rule);color:var(--muted);text-align:center;letter-spacing:.04em;font-size:.68rem}dialog{font-family:var(--mono);font-variant-numeric:tabular-nums;background:var(--card);color:var(--ink);border:1px solid var(--rule-strong);border-top:3px double var(--rule-strong);padding:var(--s5) var(--s5);min-width:340px;max-width:calc(100vw - 2rem)}dialog::backdrop{background:oklch(23.5% .02 265/.45)}dialog h3{text-transform:uppercase;letter-spacing:.16em;margin-bottom:var(--s3);font-size:.78rem}dialog .note{color:var(--muted);margin-bottom:var(--s4);max-width:42ch;font-size:.72rem;line-height:1.55}dialog input{text-align:right;width:100%;padding:.5em .6em;font-size:1.05rem}dialog .menu{gap:var(--s2);margin-top:var(--s4);flex-direction:row-reverse;display:flex}button.ghost{color:var(--muted);border-color:var(--rule);background:0 0}@media (hover:hover){button.ghost:hover{color:var(--ink);border-color:var(--rule-strong);background:0 0}}dialog .qr{margin:0 auto var(--s4);width:min(260px,60vw);height:auto;display:block}dialog .qrbox{text-align:center}dialog .qrbox .note{margin-bottom:0}@media (width<=980px){.band .top{gap:var(--s4);grid-template-columns:1fr}.position{padding-right:0;padding-bottom:var(--s4);border-right:none;border-bottom:1px solid var(--band-rule)}.desk{grid-template-columns:1fr}}@media (width<=760px){.footing{gap:var(--s3) var(--s4);grid-template-columns:1fr 1fr}}@media (width<=720px){form .row{grid-template-columns:1fr 1fr}form .f-src{grid-column:1/-1}form button{width:100%}}@media (width<=640px){.wrap{padding:var(--s4) var(--s3) var(--s6)}.band{padding:var(--s4) var(--s4) var(--s3)}.position .big{font-size:1.8rem}td,th{padding-left:.5em;padding-right:.5em}td.date{width:auto}.controls{gap:var(--s4)}footer{padding-bottom:max(0px, env(safe-area-inset-bottom))}}@media (pointer:coarse){input,select{font-size:16px}button{min-height:44px}.def .x{min-width:44px;min-height:44px;margin:-12px -.4rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important}}
