:root{--ink: #1b2430;--ink-light: #2a3546;--paper: #f7f3ec;--paper-dim: #eee8db;--gold: #c9a227;--forest: #2f5233;--rust: #b4432d;--slate: #5c6b73;--hairline: #d9d2c2;--font-display: "Fraunces", Georgia, serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:15px;-webkit-font-smoothing:antialiased}button,input,select{font-family:inherit;font-size:inherit}a{color:inherit}::selection{background:var(--gold);color:var(--ink)}.num{font-family:var(--font-display);font-variant-numeric:tabular-nums}.app-shell{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:var(--ink);color:var(--paper);display:flex;flex-direction:column;padding:28px 20px}.sidebar__brand{font-family:var(--font-display);font-size:22px;font-weight:500;letter-spacing:.01em;margin-bottom:4px}.sidebar__tagline{font-size:12px;color:#8b95a3;margin-bottom:36px}.sidebar__nav{display:flex;flex-direction:column;gap:2px}.sidebar__link{display:block;padding:9px 12px;border-radius:3px;text-decoration:none;color:#c3cad4;font-size:14px;font-weight:500;border-left:2px solid transparent}.sidebar__link:hover{color:var(--paper);background:var(--ink-light)}.sidebar__link.active{color:var(--paper);border-left:2px solid var(--gold);background:var(--ink-light)}.sidebar__footer{margin-top:auto;padding-top:20px;border-top:1px solid #34404f}.sidebar__user{font-size:13px;color:#8b95a3;margin-bottom:10px}.sidebar__signout{background:none;border:1px solid #455263;color:#c3cad4;padding:6px 10px;border-radius:3px;cursor:pointer;font-size:12px}.sidebar__signout:hover{border-color:var(--gold);color:var(--paper)}.content{flex:1;padding:36px 44px;max-width:980px}.page-title{font-family:var(--font-display);font-size:28px;font-weight:500;margin:0 0 6px}.page-sub{color:var(--slate);font-size:14px;margin:0 0 28px}.ledger{width:100%;border-collapse:collapse}.ledger thead th{text-align:left;font-size:12px;font-weight:600;color:var(--slate);padding:0 10px 8px;border-bottom:1px solid var(--ink)}.ledger tbody tr{border-bottom:1px solid var(--hairline)}.ledger tbody tr:hover{background:var(--paper-dim)}.ledger td{padding:11px 10px;font-size:14px;vertical-align:middle}.ledger td.amount{text-align:right;font-family:var(--font-display);font-size:15px}.ledger .row-delete{background:none;border:none;color:var(--slate);cursor:pointer;font-size:13px}.ledger .row-delete:hover{color:var(--rust)}.category-chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink)}.category-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.stat-row{display:flex;gap:28px;margin-bottom:32px;flex-wrap:wrap}.stat{border-left:2px solid var(--ink);padding-left:14px}.stat__label{font-size:12px;color:var(--slate);margin-bottom:4px}.stat__value{font-family:var(--font-display);font-size:26px}.stat__value.over{color:var(--rust)}.stat__value.under{color:var(--forest)}.panel{background:#fff;border:1px solid var(--hairline);border-radius:4px;padding:22px 24px;margin-bottom:24px}.panel__title{font-size:13px;font-weight:600;color:var(--slate);margin:0 0 16px}.budget-row{margin-bottom:16px}.budget-row__head{display:flex;justify-content:space-between;font-size:13.5px;margin-bottom:6px}.budget-row__name{font-weight:500}.budget-row__figures{color:var(--slate);font-family:var(--font-display)}.gauge{height:6px;background:var(--paper-dim);border-radius:3px;overflow:hidden}.gauge__fill{height:100%;background:var(--forest)}.gauge__fill.over{background:var(--rust)}.form-row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:24px}.field{display:flex;flex-direction:column;gap:4px}.field label{font-size:11.5px;color:var(--slate);font-weight:600}.field input,.field select{padding:8px 10px;border:1px solid var(--hairline);border-radius:3px;background:#fff;min-width:120px}.field input:focus,.field select:focus{outline:2px solid var(--gold);outline-offset:1px}.btn{padding:8px 16px;border-radius:3px;border:none;background:var(--ink);color:var(--paper);font-weight:600;font-size:13.5px;cursor:pointer}.btn:hover{background:var(--ink-light)}.btn.secondary{background:none;border:1px solid var(--ink);color:var(--ink)}.month-nav{display:flex;align-items:center;gap:12px;margin-bottom:24px}.month-nav button{background:none;border:1px solid var(--hairline);border-radius:3px;width:30px;height:30px;cursor:pointer;font-size:14px}.month-nav__label{font-family:var(--font-display);font-size:16px;min-width:150px;text-align:center}.empty{color:var(--slate);font-size:14px;padding:20px 0}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--ink)}.login-card{background:var(--paper);padding:44px 40px;border-radius:4px;width:320px}.login-card h1{font-family:var(--font-display);font-size:26px;margin:0 0 4px}.login-card p{color:var(--slate);font-size:13.5px;margin:0 0 26px}.login-card .field{margin-bottom:14px}.login-card input{width:100%}.login-card .btn{width:100%;margin-top:8px;padding:10px}.error-text{color:var(--rust);font-size:13px;margin:10px 0 0}
