@import "https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;500&display=swap";:root{--ink:#1a1510;--ink-muted:#52453a;--bg:#fff;--surface:#fff;--rule:#d4c9bd;--accent:#2d5016;--accent-ink:#fff;--cat-food:#e8c9a0;--cat-transport:#9ba5b0;--cat-shopping:#e5a896;--cat-bills:#b3be7a;--cat-entertainment:#a8bac7;--cat-other:#c9bcb0;--green-total:#2d5016;--vermilion-alert:#c1440e;--amber-highlight:#f59e0b;--font-mono:"Roboto Mono", "Courier New", monospace;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--grid-unit:8px;--rule-width:1px;--measure:60ch;scrollbar-color:var(--rule) transparent;caret-color:var(--accent)}@media (prefers-color-scheme:dark){:root{--ink:#f5f3ef;--ink-muted:#b8afa2;--bg:#1a1816;--surface:#1a1816;--rule:#3d3832;--accent:#78b858;--accent-ink:#1a1816;--cat-food:#8c6f47;--cat-transport:#5a636e;--cat-shopping:#8f4f43;--cat-bills:#6b7741;--cat-entertainment:#5a7080;--cat-other:#7a6e63;--green-total:#78b858;--vermilion-alert:#e65c2a;--amber-highlight:#f59e0b}}*,:before,:after{box-sizing:border-box}html{overflow-x:clip}body{font-family:var(--font-sans);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.6}.screen{min-height:100vh;padding:calc(var(--grid-unit) * 4);width:100%;max-width:1440px;margin:0 auto}p{text-wrap:pretty}h1,h2,h3{text-wrap:balance}::selection{background:var(--amber-highlight);color:var(--ink)}::selection{background:var(--amber-highlight);color:var(--ink)}:focus-visible{outline:2px solid var(--rule);outline-offset:2px}a{color:var(--accent);text-underline-offset:.18em}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--rule);border:3px solid var(--bg);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:var(--ink)}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}button,[role=button],summary,select,input[type=checkbox],input[type=radio]{min-height:44px}button{cursor:pointer;background:0 0;border:none;min-width:44px;font-family:inherit}input,select,textarea{font:inherit;font-size:max(1rem,16px)}img,video,canvas,svg{max-width:100%;height:auto}pre{overflow-x:auto}.envelope-bands{gap:calc(var(--grid-unit) * 2);margin-bottom:calc(var(--grid-unit) * 4);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.envelope-band{border:var(--rule-width) solid var(--rule);background:var(--bg);height:40px;position:relative;overflow:hidden}.envelope-fill{opacity:.15;transition:width .3s ease-out;position:absolute;top:0;bottom:0;left:0}.envelope-label{padding:calc(var(--grid-unit) * 1.5);letter-spacing:.05em;text-transform:uppercase;justify-content:space-between;align-items:center;font-size:13px;font-weight:600;display:flex;position:relative}.envelope-amount{font-family:var(--font-mono);font-feature-settings:"tnum";font-size:14px;font-weight:500}.section-heading{letter-spacing:.02em;margin-bottom:calc(var(--grid-unit) * 3);color:var(--ink);font-size:20px;font-weight:600}.bar-chart{background-image:repeating-linear-gradient(to bottom, transparent, transparent calc(var(--grid-unit) * 4 - var(--rule-width)), var(--rule) calc(var(--grid-unit) * 4 - var(--rule-width)), var(--rule) calc(var(--grid-unit) * 4));height:240px;padding:calc(var(--grid-unit) * 2);margin-bottom:calc(var(--grid-unit) * 5);justify-content:space-around;align-items:flex-end;gap:calc(var(--grid-unit) * 2);display:flex;position:relative}.bar-column{align-items:center;gap:calc(var(--grid-unit));flex-direction:column;flex:1;display:flex}.bar-amount{font-family:var(--font-mono);font-feature-settings:"tnum";color:var(--ink);font-size:13px;font-weight:500}.bar{border:var(--rule-width) solid var(--rule);width:100%;max-width:80px;min-height:4px;transition:height .4s cubic-bezier(.19,1,.22,1);position:relative}.bar-label{letter-spacing:.05em;text-transform:uppercase;color:var(--ink);text-align:center;font-size:11px;font-weight:600}.chart-month{bottom:-24px;left:calc(var(--grid-unit) * 2);color:var(--ink-muted);font-size:13px;font-weight:600;position:absolute}.expense-list{flex-direction:column;display:flex}.expense-row{align-items:center;gap:calc(var(--grid-unit) * 2);padding:calc(var(--grid-unit) * 2);border-top:var(--rule-width) solid var(--rule);grid-template-columns:100px 1fr auto auto;transition:background .15s ease-out;display:grid;position:relative}.expense-row:last-child{border-bottom:var(--rule-width) solid var(--rule)}.expense-row:hover{background:#d4c9bd26}.expense-row.highlight{background:var(--amber-highlight);animation:2s ease-out forwards fadeHighlight}@media (prefers-reduced-motion:no-preference){@keyframes fadeHighlight{0%{background:var(--amber-highlight)}to{background:0 0}}}.expense-date{font-family:var(--font-mono);font-feature-settings:"tnum";color:var(--ink-muted);font-size:14px;font-weight:400}.expense-details{align-items:center;gap:calc(var(--grid-unit) * 2);display:flex}.expense-category{letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;border-radius:2px;padding:4px 8px;font-size:11px;font-weight:600}.expense-note{color:var(--ink);font-size:15px}.expense-amount{font-family:var(--font-mono);font-feature-settings:"tnum";color:var(--ink);text-align:right;font-size:16px;font-weight:500}.expense-actions{gap:calc(var(--grid-unit));opacity:0;transition:opacity .15s ease-out;display:flex}.expense-row:hover .expense-actions{opacity:1}.icon-button{width:32px;height:32px;color:var(--rule);border-radius:2px;justify-content:center;align-items:center;transition:all .15s ease-out;display:flex}.icon-button:hover{background:var(--rule);color:var(--bg)}.icon-button.delete:hover{background:var(--vermilion-alert);color:var(--bg)}.add-button{bottom:calc(var(--grid-unit) * 4);right:calc(var(--grid-unit) * 4);height:44px;padding:0 calc(var(--grid-unit) * 3);background:var(--green-total);color:var(--bg);font-family:var(--font-mono);align-items:center;gap:calc(var(--grid-unit));border-radius:2px;font-size:14px;font-weight:500;transition:transform .15s cubic-bezier(.19,1,.22,1);display:flex;position:fixed;box-shadow:0 2px 8px #2d501633}@media (prefers-reduced-motion:no-preference){.add-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #2d50164d}.add-button:active{transform:translateY(0)}}.form{max-width:600px;margin:0 auto}.form-group{margin-bottom:calc(var(--grid-unit) * 3)}.form-label{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:calc(var(--grid-unit));font-size:13px;font-weight:600;display:block}.form-input,.form-select,.form-textarea{width:100%;padding:calc(var(--grid-unit) * 2);background:var(--bg);border:var(--rule-width) solid var(--rule);color:var(--ink);border-radius:0;min-height:44px;font-size:15px}.form-input[type=number]{font-family:var(--font-mono);font-feature-settings:"tnum"}.form-textarea{resize:vertical;min-height:80px;font-family:var(--font-sans)}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:2px solid var(--rule);outline-offset:0}.form-input::placeholder{color:var(--ink-muted);opacity:.6}.form-actions{gap:calc(var(--grid-unit) * 2);margin-top:calc(var(--grid-unit) * 4);justify-content:flex-end;display:flex}.button{height:44px;padding:0 calc(var(--grid-unit) * 3);font-family:var(--font-mono);border:var(--rule-width) solid transparent;border-radius:2px;font-size:14px;font-weight:500;transition:all .15s ease-out}.button-primary{background:var(--green-total);color:var(--bg)}.button-primary:hover:not(:disabled){background:#234012}.button-primary:disabled{opacity:.5;cursor:not-allowed}.button-secondary{color:var(--ink);border-color:var(--rule);background:0 0}.button-secondary:hover{background:var(--rule);color:var(--bg)}.empty-state{text-align:center;padding:calc(var(--grid-unit) * 8) calc(var(--grid-unit) * 4);color:var(--ink-muted);position:relative}.empty-state:before{content:"";background-image:repeating-linear-gradient(to bottom, transparent, transparent calc(var(--grid-unit) * 4 - var(--rule-width)), var(--rule) calc(var(--grid-unit) * 4 - var(--rule-width)), var(--rule) calc(var(--grid-unit) * 4));opacity:.2;z-index:-1;position:absolute;inset:0}.empty-state p{margin-bottom:calc(var(--grid-unit) * 2);font-size:18px}.tab-bar{border-bottom:var(--rule-width) solid var(--rule);background:var(--bg);padding:0 calc(var(--grid-unit) * 4);z-index:10;gap:0;display:flex;position:sticky;top:0}.tab{padding:calc(var(--grid-unit) * 2) calc(var(--grid-unit) * 4);letter-spacing:.02em;color:var(--ink-muted);border-bottom:2px solid #0000;margin-bottom:-1px;font-size:14px;font-weight:600;text-decoration:none;transition:all .15s ease-out}.tab:hover{color:var(--ink)}.tab.active{color:var(--ink);border-bottom-color:var(--green-total)}.cat-food{background:var(--cat-food)}.cat-transport{background:var(--cat-transport)}.cat-shopping{background:var(--cat-shopping)}.cat-bills{background:var(--cat-bills)}.cat-entertainment{background:var(--cat-entertainment)}.cat-other{background:var(--cat-other)}@media (width<=768px){.screen{padding:calc(var(--grid-unit) * 2)}.envelope-bands{grid-template-columns:1fr}.expense-row{gap:calc(var(--grid-unit));padding:calc(var(--grid-unit) * 2);grid-template-columns:1fr}.expense-date{font-size:12px}.expense-actions{opacity:1;margin-top:calc(var(--grid-unit))}.bar-chart{gap:calc(var(--grid-unit))}.bar{max-width:40px}.bar-amount{font-size:11px}.bar-label{font-size:9px}}@media (width<=480px){.screen{padding-inline:1rem}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media (width<=480px){body,.container,[class*=container],section,header,footer,nav,main,article{padding-inline:max(1rem,16px)}}p,li,dt,dd,blockquote,figcaption,td,th{max-width:min(75ch,100%)}
