:root{--fg:#1a1a1a;--bg:#fdfdfd;--accent:#0a7d4a;--warn:#b45309;--red:#b91c1c;--muted:#666;--border:#ddd;--subtle:#f5f5f5;--income:#0a7d4a;--expense:#eb6834;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--fg:#e4e4e4;--bg:#1a1a1a;--accent:#4ade80;--warn:#fbbf24;--red:#f87171;--muted:#999;--border:#333;--subtle:#262626;--income:#4ade80;--expense:#d95926}}*{box-sizing:border-box}body{color:var(--fg);background:var(--bg);margin:0;font:15px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}h1{margin:0;font-size:1.1em}h2{margin:0 0 .6em;font-size:1.3em}h3{color:var(--muted);margin:1.2em 0 .4em;font-size:1em;font-weight:600}a{color:var(--accent)}button,input,select{font:inherit;color:inherit}button{border:1px solid var(--accent);color:var(--accent);cursor:pointer;white-space:nowrap;background:0 0;border-radius:4px;padding:.15em .7em}button:disabled{opacity:.5;cursor:default}button.warn{border-color:var(--warn);color:var(--warn)}button.link-button{color:var(--muted);border:none;padding:0 .3em;text-decoration:underline}input,select{border:1px solid var(--border);background:var(--bg);border-radius:4px;padding:.15em .4em}.app-header{background:var(--subtle);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.3em 1.5em;padding:.6em 1.2em;display:flex}.app-header nav{flex-wrap:wrap;gap:.3em 1em;display:flex}.app-header nav a{color:var(--muted);border-bottom:2px solid #0000;font-weight:500;text-decoration:none}.app-header nav a.active{color:var(--accent);border-bottom-color:var(--accent)}.app-user{align-items:center;gap:.8em;margin-left:auto;display:flex}.login{flex-direction:column;align-items:center;gap:1em;max-width:28em;margin:15vh auto 0;padding:0 1em;display:flex}.app-main{max-width:1080px;margin:0 auto;padding:1em 1.2em 3em}.alert{border:1px solid var(--border);border-radius:4px;flex-wrap:wrap;align-items:center;gap:.4em .8em;margin-bottom:.7em;padding:.45em .8em;display:flex}.alert-error{border-color:var(--red);background:color-mix(in srgb, var(--red) 12%, var(--bg))}.alert-warn{border-color:var(--warn);background:color-mix(in srgb, var(--warn) 10%, var(--bg))}.alert-info{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, var(--bg))}.toolbar{flex-wrap:wrap;align-items:center;gap:.5em .8em;margin-bottom:.8em;display:flex}.toolbar label{color:var(--muted);align-items:center;gap:.3em;font-size:.92em;display:inline-flex}.row{border-bottom:1px dashed var(--border);flex-wrap:wrap;align-items:center;gap:.4em .9em;padding:.5em 0;display:flex}.grow{flex:200px}.muted{color:var(--muted);font-size:.92em}.warn-text{color:var(--warn)}.in{color:var(--income)}.out{color:var(--red)}.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.chip{border:1px solid var(--border);color:var(--muted);border-radius:4px;padding:0 .5em;font-size:.88em;display:inline-block}.pill{background:var(--subtle);color:var(--muted);white-space:nowrap;border-radius:10px;padding:.05em .55em;font-size:.78em;display:inline-block}.pill.ok{background:var(--accent);color:var(--bg)}.pill.bad{background:var(--red);color:var(--bg)}.pill.warn{background:var(--warn);color:var(--bg)}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;margin:.6em 0;font-size:.93em}th,td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:.4em .6em}th{background:var(--subtle);font-weight:600}th.num,td.num{text-align:right}tr.highlight{background:color-mix(in srgb, var(--warn) 8%, var(--bg))}.grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.8em;display:grid}.box{border:1px solid var(--border);border-radius:6px;padding:.6em .8em}.group{border:1px solid var(--border);border-radius:8px;margin-bottom:1em;padding:.6em .9em}form.inline{flex-wrap:wrap;align-items:center;gap:.4em .7em;padding:.5em 0;display:flex}.chart{width:100%;height:280px;margin:.5em 0}.bar-track{background:var(--subtle);border-radius:2px;height:12px;overflow:hidden}.bar-fill{background:var(--expense);height:100%}
