:root{--bg:#0f1117;--bg-card:#1a1d27;--bg-input:#252836;--border:#2e3244;--text:#e8eaf0;--text-muted:#8b90a7;--primary:#6c63ff;--primary-hover:#5a52e0;--success:#22c55e;--danger:#ef4444;--warning:#f59e0b;--radius:10px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}button{cursor:pointer;border-radius:var(--radius);border:none;padding:.5rem 1rem;font-family:inherit;font-size:.9rem;transition:background .2s,opacity .2s}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-ghost{color:var(--text-muted);border:1px solid var(--border);background:0 0}.btn-ghost:hover{color:var(--text);border-color:var(--text-muted)}.btn-danger{background:var(--danger);color:#fff}.btn-success{background:var(--success);color:#fff}.btn-sm{padding:.3rem .7rem;font-size:.8rem}input,select,textarea{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);outline:none;width:100%;padding:.6rem .8rem;font-family:inherit;font-size:.9rem}input:focus,select:focus,textarea:focus{border-color:var(--primary)}select option{background:var(--bg-card)}label{color:var(--text-muted);margin-bottom:.3rem;font-size:.8rem;display:block}.field{margin-bottom:1rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem}.page-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.page-header h1{font-size:1.4rem}.tag{border-radius:20px;padding:.2rem .6rem;font-size:.75rem;font-weight:600;display:inline-block}.tag-weekly{color:var(--primary);background:#6c63ff33}.tag-monthly{color:var(--success);background:#22c55e33}.tag-yearly{color:var(--warning);background:#f59e0b33}.tag-fortnightly{color:var(--text-muted);background:#8b90a733}.error{color:var(--danger);margin-top:.25rem;font-size:.85rem}.empty-state{text-align:center;color:var(--text-muted);padding:3rem 1rem}.grid-2{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.amount-positive{color:var(--success)}.amount-negative{color:var(--danger)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
