*{margin:0;padding:0;box-sizing:border-box}:root{--primary: #2d5016;--primary-light: #4a7c2c;--danger: #c53030;--in: #15803d;--out: #b45309;--border: #e5e7eb;--bg: #f9fafb;--card: #fff;--text: #1f2937;--muted: #6b7280;--selected: #ecfccb}html,body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg);line-height:1.4;font-size:15px}button,input,select{font:inherit}button{cursor:pointer;border:1px solid var(--border);border-radius:6px;padding:8px 12px;background:var(--card);color:var(--text)}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--primary);border-color:var(--primary);color:#fff}button.danger{color:var(--danger);border-color:var(--danger)}button.link{border:none;background:none;color:var(--primary-light);padding:4px 0;text-decoration:underline}input,select{width:100%;padding:8px;border:1px solid var(--border);border-radius:6px;background:#fff;min-height:40px;font-size:16px}label{display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--muted)}.app{max-width:1100px;margin:0 auto;padding:0 16px 32px}.card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px;margin-bottom:12px}.error{color:var(--danger);margin:8px 0}.error.banner{background:#fef2f2;border:1px solid #fecaca;border-radius:6px;padding:8px 12px;cursor:pointer}.empty{text-align:center;color:var(--muted);padding:16px}.tabs{display:flex;gap:4px;position:sticky;top:0;z-index:2;background:var(--bg);padding:12px 0;margin-bottom:4px}.tabs button{flex:1;font-weight:600}.tabs button.active{background:var(--primary);color:#fff;border-color:var(--primary)}.auth-container{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.auth-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:12px}.auth-card h1{color:var(--primary);text-align:center}.tx-form h2{font-size:16px;margin-bottom:8px}.tx-form.editing{border-color:var(--primary-light);box-shadow:0 0 0 2px var(--selected)}.tx-form .grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:end}.tx-form .wide{grid-column:1 / -1}.toggle{display:flex}.toggle button{flex:1;min-height:40px}.toggle button:first-child{border-radius:6px 0 0 6px}.toggle button:last-child{border-radius:0 6px 6px 0}.toggle button.on.out{background:var(--out);border-color:var(--out);color:#fff}.toggle button.on.in{background:var(--in);border-color:var(--in);color:#fff}.actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:end}.filters>*{flex:1 1 140px}.filters>button{flex:0 0 auto}table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--border);border-radius:8px}th,td{padding:8px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}th{font-size:13px;color:var(--muted);font-weight:600}.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.out{color:var(--out)}.in{color:var(--in)}.neg{color:var(--danger);font-weight:600}.ledger tbody tr,.clickable{cursor:pointer}.ledger tbody tr:hover,.clickable:hover{background:var(--bg)}tr.selected{background:var(--selected)!important}.date{white-space:nowrap}.sub-row td{background:var(--bg);font-size:14px}.sub-row td:first-child{padding-left:28px}tr.archived td:first-child,li.archived .name{color:var(--muted)}tfoot th{color:var(--text);font-size:15px;border-top:2px solid var(--text)}.projects{list-style:none}.projects li{display:flex;flex-direction:column;gap:8px}.projects .actions{margin:0;display:flex;gap:6px}@media (max-width: 700px){.ledger thead{display:none}.ledger,.ledger tbody{display:block;border:none;background:none}.ledger tr{display:grid;grid-template-columns:1fr auto;gap:2px 8px;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin-bottom:8px}.ledger td{border:none;padding:0}.ledger td:empty{display:none}.ledger .date{grid-column:1;font-size:13px;color:var(--muted)}.ledger .project{grid-column:1;font-weight:600}.ledger .sub{grid-column:1;font-size:13px;color:var(--muted)}.ledger .desc{grid-column:1 / -1}.ledger .out,.ledger .in{grid-column:2;grid-row:1 / span 2;font-size:17px;font-weight:600}.ledger .bal{grid-column:1 / -1;font-size:12px;color:var(--muted);text-align:right}.ledger .bal:before{content:attr(data-label) ": "}.ledger .bal.neg{color:var(--danger)}.ledger .empty{grid-column:1 / -1}.balance th,.balance td{padding:8px 2px;font-size:12px}.balance-wrap{overflow-x:auto}}.chip{display:inline-block;padding:1px 8px;border-radius:10px;border-left:4px solid var(--c);background:color-mix(in srgb,var(--c) 18%,transparent)}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--c);margin-right:6px}.projects .name{display:flex;align-items:center;gap:8px}.projects input[type=color]{width:32px;height:32px;padding:0;border:none;background:none}.sentinel{height:1px}.totals{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.totals div{display:flex;flex-direction:column;gap:2px}.totals span{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.totals strong{font-size:18px;font-variant-numeric:tabular-nums}.totals .neg{color:var(--danger)}@media (max-width: 700px){.totals{grid-template-columns:1fr 1fr}}.projects .usage{color:var(--muted);margin-left:auto}.projects .actions button{padding:6px 8px}
