:root{--accent: #1f7a3d;--dark: #143d24;--income: #1f7a3d;--expense: #c0392b;--bg: #f4f6f5;--card: #fff;--line: #e0e6e2;--muted: #6b7770}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:#1c2620}a{color:inherit;text-decoration:none}.app{display:flex;min-height:100vh}.sidebar{width:210px;background:var(--dark);color:#fff;padding:20px 0;flex-shrink:0;display:flex;flex-direction:column}.sidebar h1{font-size:16px;margin:0 20px 20px}.sidebar nav a{display:block;padding:10px 20px;font-size:14px;color:#cfe6d8}.sidebar nav a.active,.sidebar nav a:hover{background:#ffffff1a;color:#fff}.main{flex:1;padding:24px 28px;max-width:1200px}.row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-bottom:20px}label.field{display:flex;flex-direction:column;font-size:12px;color:var(--muted);gap:4px}input,select{padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-size:14px}button{background:var(--accent);color:#fff;border:0;padding:8px 16px;border-radius:8px;font-size:14px;cursor:pointer}button.secondary{background:#fff;color:var(--accent);border:1px solid var(--accent)}button.danger{background:var(--expense)}button:active{transform:translateY(1px)}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:22px}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}.card .k{font-size:12px;color:var(--muted);margin-bottom:6px}.card .v{font-size:24px;font-weight:700}.v.income{color:var(--income)}.v.expense{color:var(--expense)}table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}th,td{padding:9px 12px;text-align:left;font-size:13px;border-bottom:1px solid var(--line)}th{background:#eef3f0;color:var(--dark)}td.amt,th.amt{text-align:right;font-variant-numeric:tabular-nums}.tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:99px}.tag.INCOME{background:#e3f1e8;color:var(--income)}.tag.EXPENSE{background:#fbe6e3;color:var(--expense)}.muted{color:var(--muted)}.sec-title{font-size:15px;font-weight:700;color:var(--dark);margin:22px 0 10px}.err{color:var(--expense);font-size:13px}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center}.modal{background:#fff;border-radius:12px;padding:20px;width:380px}.modal h3{margin:0 0 14px}.modal .grid{display:grid;gap:10px}.actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.infotip{position:relative;display:inline-flex;margin-left:4px;vertical-align:middle}.infotip-icon{cursor:help;font-size:10px;font-style:normal;font-weight:700;color:var(--muted);border:1px solid var(--line);border-radius:50%;width:15px;height:15px;display:inline-flex;align-items:center;justify-content:center;line-height:1;background:#fff}.infotip:hover .infotip-icon,.infotip:focus-visible .infotip-icon{color:var(--accent);border-color:var(--accent)}.infotip-box{position:absolute;z-index:60;top:150%;left:50%;transform:translate(-50%);width:300px;max-width:78vw;background:#1c2620;color:#eef3f0;padding:10px 12px;border-radius:8px;font-size:12px;line-height:1.5;font-weight:400;text-align:left;box-shadow:0 8px 28px #00000047;opacity:0;visibility:hidden;transition:opacity .12s;white-space:normal}.infotip:hover .infotip-box,.infotip:focus-within .infotip-box{opacity:1;visibility:visible}.infotip-box .r{display:block;margin-top:5px}.infotip-box .r:first-child{margin-top:0}.infotip-box .r .k{color:#86c5a3;font-weight:600}th .infotip-icon{background:transparent}
