:root{--ink: #12181f;--ink-raised: #1a222c;--rule: #2a3441;--paper: #eae4d6;--paper-dim: #a9a495;--brass: #c9a24b;--rust: #b5544a;--display: "Fraunces", Georgia, serif;--body: "Inter", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--ink);color:var(--paper);font-family:var(--body);-webkit-font-smoothing:antialiased}.app{max-width:960px;margin:0 auto;padding:48px 24px 96px}.masthead{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--rule);padding-bottom:20px;margin-bottom:36px}.masthead h1{font-family:var(--display);font-weight:600;font-size:28px;letter-spacing:.02em;margin:0}.masthead .as-of{font-size:13px;color:var(--paper-dim)}.balance-row{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:40px}.balance-card{flex:1;min-width:200px;background:var(--ink-raised);border:1px solid var(--rule);border-radius:4px;padding:20px 22px}.balance-card .label{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--paper-dim)}.balance-card .amount{font-family:var(--display);font-size:30px;margin-top:6px}section{margin-bottom:44px}section>h2{font-family:var(--display);font-weight:400;font-size:19px;color:var(--brass);margin:0 0 16px;padding-bottom:8px;border-bottom:1px solid var(--rule)}.ledger-line{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px dashed var(--rule);font-size:14px}.ledger-line:last-child{border-bottom:none}.ledger-line .desc{color:var(--paper)}.ledger-line .meta{color:var(--paper-dim);font-size:12px;margin-top:2px}.ledger-line .amt{font-family:var(--display);font-size:15px;white-space:nowrap}.amt.out{color:var(--rust)}.amt.in{color:var(--brass)}.budget-form{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}.budget-form input{background:var(--ink-raised);border:1px solid var(--rule);color:var(--paper);padding:8px 10px;border-radius:3px;font-family:var(--body);font-size:13px}.budget-form button{background:var(--brass);color:var(--ink);border:none;padding:8px 16px;border-radius:3px;font-weight:600;font-size:13px;cursor:pointer}.bar-track{height:6px;background:var(--rule);border-radius:3px;overflow:hidden;margin-top:6px}.bar-fill{height:100%;background:var(--brass)}.bar-fill.over{background:var(--rust)}.section-note{color:var(--paper-dim);font-size:12px;margin:-8px 0 16px}.badge{display:inline-block;margin-top:4px;padding:2px 8px;border-radius:10px;border:1px solid var(--brass);color:var(--brass);font-size:10px;text-transform:uppercase;letter-spacing:.06em}.badge.badge-dim{border-color:var(--rule);color:var(--paper-dim)}.empty{color:var(--paper-dim);font-size:14px;font-style:italic;padding:12px 0}.status-banner{background:var(--ink-raised);border:1px solid var(--rule);border-radius:4px;padding:14px 18px;font-size:13px;color:var(--paper-dim);margin-bottom:32px}
