@font-face{font-family:Marcellus;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/marcellus-latin-400-normal-86dSXJnk.woff2)format("woff2"),url(/assets/marcellus-latin-400-normal-AvMY561b.woff)format("woff")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--paper:#edf0e8;--card:#fcfdf9;--ink:#18231d;--ink-soft:#5b6b62;--line:#c6d0c5;--line-soft:#e3e8df;--credit:#17784b;--debit:#ae392d;--accent:#174536;--accent-ink:#f1f6f2;--rule-red:#c4574a55;--focus:#0f62fe;--shadow:0 1px 2px #18231d0f, 0 8px 24px -18px #18231d66;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--display:"Marcellus", "Iowan Old Style", Georgia, serif;--margin-rule:34px;--guilloche:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='28'%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='.055'%3E%3Cpath d='M0 14 Q20 3 40 14 T80 14 T120 14 T160 14'/%3E%3Cpath d='M0 14 Q20 25 40 14 T80 14 T120 14 T160 14'/%3E%3Cpath d='M0 5 Q20 16 40 5 T80 5 T120 5 T160 5'/%3E%3Cpath d='M0 23 Q20 12 40 23 T80 23 T120 23 T160 23'/%3E%3C/g%3E%3C/svg%3E")}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--paper:#121a15;--card:#19241e;--ink:#e3ebe5;--ink-soft:#93a69b;--line:#33423a;--line-soft:#243029;--credit:#5cc491;--debit:#e8877c;--accent:#12362a;--accent-ink:#e9f3ed;--rule-red:#c4574a44;--focus:#79aefc;--shadow:0 1px 2px #0000004d, 0 8px 24px -18px #000c}}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5;overflow-x:hidden}.skip-link{z-index:20;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:2px;padding:8px 14px;text-decoration:none;transition:top .12s;position:absolute;top:-52px;left:8px}.skip-link:focus-visible{top:8px}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.app{flex-direction:column;min-height:100vh;display:flex}.topbar{background:var(--guilloche), var(--accent);color:var(--accent-ink);flex-wrap:wrap;align-items:center;gap:24px;padding:0 24px;display:flex}.wordmark{font-family:var(--display);letter-spacing:.24em;text-transform:uppercase;white-space:nowrap;color:inherit;padding:15px 0 13px;font-size:19px;text-decoration:none}a.wordmark:hover span{opacity:.85}.wordmark span{font-family:var(--mono);opacity:.55;letter-spacing:.06em;text-transform:lowercase;margin-left:14px;font-size:12px;font-weight:400}.tabs{gap:2px;margin-left:auto;display:flex}.tab{appearance:none;color:var(--accent-ink);opacity:.72;font:inherit;letter-spacing:.02em;cursor:pointer;background:0 0;border:0;border-bottom:3px solid #0000;padding:17px 14px 13px;font-size:14px;transition:opacity .12s}.tab:hover{opacity:1}.tab[aria-selected=true]{opacity:1;border-bottom-color:var(--accent-ink)}.content{flex:1;width:min(1120px,100% - 40px);margin:0 auto 72px}.panel-title{font-family:var(--display);letter-spacing:.01em;color:var(--accent-ink);background:var(--guilloche), var(--accent);margin:0 calc(50% - 50vw) 26px;padding:24px calc(50vw - 50%) 30px;font-size:31px;font-weight:400}.panel-head{background:var(--guilloche), var(--accent);margin:0 calc(50% - 50vw) 26px;padding:24px calc(50vw - 50%) 28px}.panel-head .panel-title{background:0 0;margin:0 0 18px;padding:0}.panel-head .filters{margin-bottom:0}.panel-head .filters label{color:var(--accent-ink);opacity:.85}.panel-head-deep{margin-bottom:-38px;padding-bottom:64px}.panel-head-deep+.stat-grid{box-shadow:0 10px 24px #18231d2e}.dash-grid{grid-template-columns:1fr 1fr;align-items:start;gap:18px;display:grid}.dash-grid .card{margin-bottom:0}@media (width<=900px){.dash-grid{grid-template-columns:1fr}}.card{background:linear-gradient(to right, transparent calc(var(--margin-rule) - 8px), var(--rule-red) calc(var(--margin-rule) - 8px), var(--rule-red) calc(var(--margin-rule) - 7px), transparent calc(var(--margin-rule) - 7px), transparent calc(var(--margin-rule) - 3px), var(--rule-red) calc(var(--margin-rule) - 3px), var(--rule-red) calc(var(--margin-rule) - 2px), transparent calc(var(--margin-rule) - 2px)), var(--card);border:1px solid var(--line);box-shadow:var(--shadow);padding:20px 24px 20px calc(var(--margin-rule) + 14px);border-radius:3px;margin-bottom:18px}.card h2{font-family:var(--display);letter-spacing:.01em;margin:0 0 12px;font-size:19px;font-weight:400}.card h3{margin:18px 0 8px;font-size:14px}.muted{color:var(--ink-soft)}.small{font-size:13px}.btn{appearance:none;font:inherit;border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);cursor:pointer;letter-spacing:.01em;border-radius:2px;padding:7px 16px;font-size:14px;transition:filter .12s}.btn:hover{filter:brightness(1.18)}.btn:disabled{opacity:.45;cursor:not-allowed;filter:none}.btn-secondary{color:var(--accent);background:0 0}.btn-secondary:hover{filter:none;background:#17453612}.btn-danger{border-color:var(--debit);color:var(--debit);background:0 0}.btn-danger:hover{filter:none;background:#ae392d12}.btn-small{padding:4px 10px;font-size:13px}.btn-icon{padding:4px 8px;line-height:1}input[type=text],input[type=search],input[type=number],select{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:2px;max-width:100%;padding:7px 10px;font-size:14px;transition:border-color .12s}input[type=text]:hover,input[type=search]:hover,select:hover{border-color:var(--ink-soft)}input:invalid{border-color:var(--debit)}label{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);flex-direction:column;gap:5px;font-size:12px;display:inline-flex}label>input,label>select{text-transform:none;letter-spacing:normal}.field-row{flex-wrap:wrap;align-items:flex-end;gap:14px;margin:12px 0;display:flex}.error-text{color:var(--debit);margin:6px 0 0;font-size:13px}.ledger{border-collapse:collapse;width:100%;font-size:14px}.ledger th{text-align:left;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);border-bottom:2px solid var(--ink);white-space:nowrap;background:var(--card);padding:8px 10px;font-size:11px;font-weight:600;position:sticky;top:0}.th-sort{appearance:none;cursor:pointer;font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;background:0 0;border:0;padding:0}.th-sort:hover{color:var(--ink)}.ledger td{border-bottom:1px solid var(--line-soft);vertical-align:middle;padding:8px 10px}.ledger tbody tr:hover{background:#1745360b}.num,.ledger .num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.credit{color:var(--credit)}.debit{color:var(--debit)}.date-cell{font-family:var(--mono);white-space:nowrap;color:var(--ink-soft);font-size:13px}.table-scroll{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:3px;padding:0 6px;overflow-x:auto}.badge{font-family:var(--mono);letter-spacing:.04em;border:1px solid var(--line);background:var(--paper);white-space:nowrap;border-radius:2px;padding:1px 8px 2px;font-size:11px;display:inline-block}.badge-manual{border-color:var(--accent);color:var(--accent)}.badge-uncategorized{color:var(--ink-soft);border-style:dashed}.dropzone{border:1px dashed var(--line);background:var(--card);box-shadow:var(--shadow);text-align:center;cursor:pointer;color:var(--ink-soft);border-radius:3px;max-width:640px;margin:0 auto;padding:56px 24px;transition:border-color .12s,color .12s}.dropzone.dragover,.dropzone:hover{border-color:var(--accent);color:var(--ink)}.dropzone strong{font-family:var(--display);color:var(--ink);margin-bottom:8px;font-size:22px;font-weight:400;display:block}.dropzone-note{text-align:center;max-width:640px;margin:16px auto 0}.notices{z-index:10;flex-direction:column;gap:8px;max-width:min(420px,100vw - 32px);display:flex;position:fixed;bottom:16px;right:16px}@keyframes rise-in{0%{opacity:0;translate:0 10px}}.notice{border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow);border-radius:2px;align-items:flex-start;gap:10px;padding:10px 12px;font-size:14px;animation:.2s ease-out rise-in;display:flex}.notice-success{border-left:3px solid var(--credit)}.notice-error{border-left:3px solid var(--debit)}.notice button{cursor:pointer;color:var(--ink-soft);background:0 0;border:0;margin-left:auto;padding:0 2px;font-size:15px}.banner-error{background:var(--card);border:1px solid var(--debit);border-left:3px solid var(--debit);border-radius:2px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;padding:12px 16px;display:flex}.banner-info{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--accent);box-shadow:var(--shadow);border-radius:2px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;padding:12px 16px;font-size:14px;display:flex}.stat-grid{background:var(--card);border:1px solid var(--line);border-top:2px solid var(--ink);box-shadow:var(--shadow);border-radius:0 0 3px 3px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:18px;display:grid}.stat{border-left:1px solid var(--line-soft);padding:13px 18px 15px}.stat:first-child{border-left:0}.stat .label{font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--ink-soft);font-size:10.5px}.stat .value{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em;margin-top:5px;font-size:24px}.chart-wrap{overflow-x:auto}.chart-legend{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);gap:18px;margin-bottom:10px;font-size:11px;display:flex}.legend-swatch{vertical-align:baseline;border-radius:1px;width:9px;height:9px;margin-right:6px;display:inline-block}.bar-row{grid-template-columns:minmax(90px,160px) 1fr minmax(80px,auto);align-items:center;gap:12px;padding:5px 0;font-size:14px;display:grid}.bar-row.with-trend{grid-template-columns:minmax(90px,160px) 1fr 80px minmax(80px,auto)}.sparkline-cell{align-items:center;min-height:20px;display:inline-flex}.bar-track{background:var(--line-soft);border-radius:1px;height:12px;overflow:hidden}@keyframes grow-x{0%{transform:scaleX(0)}}.bar-fill{background:var(--accent);transform-origin:0;min-width:2px;height:100%;animation:.48s cubic-bezier(.2,.7,.3,1) grow-x}.empty-state{text-align:center;color:var(--ink-soft);padding:56px 20px}.empty-state strong{font-family:var(--display);color:var(--ink);font-size:21px;font-weight:400}.empty-state p{margin:8px 0}.filters{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:14px;display:flex}.filters input[type=search]{flex:1;min-width:180px}.rule-row{border-bottom:1px solid var(--line-soft);flex-wrap:wrap;align-items:center;gap:10px;padding:9px 0;display:flex}.rule-row:last-of-type{border-bottom:0}.rule-pattern{font-family:var(--mono);background:var(--paper);border:1px solid var(--line-soft);border-radius:2px;padding:2px 7px;font-size:13px}.rule-row .spacer{flex:1}.rule-disabled{opacity:.5}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (width<=640px){:root{--margin-rule:22px}.topbar{padding:0 12px}.wordmark{padding:12px 0 6px}.wordmark span{display:none}.tabs{width:100%;margin-left:0;overflow-x:auto}.tab{padding:10px 10px 8px}.content{width:calc(100% - 24px)}.panel-title{margin-bottom:18px;padding-top:16px;padding-bottom:20px;font-size:24px}.card{padding:14px 14px 14px calc(var(--margin-rule) + 10px)}.stat .value{font-size:19px}.bar-row{grid-template-columns:minmax(70px,100px) 1fr minmax(70px,auto);font-size:13px}.bar-row.with-trend{grid-template-columns:minmax(70px,100px) 1fr minmax(70px,auto)}.sparkline-cell{display:none}}@media (prefers-color-scheme:dark){input[type=text],input[type=search],input[type=number],select{color:var(--ink);background:#101813}.btn{background:#2e6b56;border-color:#2e6b56}.btn-secondary{color:#7cc1a5;background:0 0;border-color:#2e6b56}.btn-secondary:hover{background:#7cc1a51a}.btn-danger{color:var(--debit);border-color:var(--debit);background:0 0}.btn-danger:hover{background:#e8877c1f}.ledger th{border-bottom-color:var(--ink-soft)}.ledger tbody tr:hover{background:#7cc1a512}.banner-error{background:#2c1a17}.bar-fill{background:#2e6b56}}
