*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f8fafc;--surface:#fff;--border:#e2e8f0;--text:#1e293b;--text-muted:#94a3b8;--primary:#3b82f6;--primary-hover:#2563eb;--danger:#ef4444;--danger-hover:#dc2626;--radius:8px;--shadow:0 1px 3px #0000001a}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.6}.container{max-width:960px;margin:0 auto;padding:1.5rem}header{margin-bottom:2rem}header h1{font-size:1.75rem;font-weight:700}header p{color:var(--text-muted);font-size:.9rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem}.grid{gap:1.5rem;display:grid}@media (width>=768px){.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:1fr 1fr 1fr}}.form-group{margin-bottom:1rem}.form-group label{color:var(--text);margin-bottom:.375rem;font-size:.875rem;font-weight:500;display:block}.form-group input,.form-group select,.form-group textarea{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;color:var(--text);padding:.5rem .75rem;font-size:.9rem}.form-group input:focus,.form-group select:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #3b82f626}.btn{border-radius:var(--radius);cursor:pointer;border:none;align-items:center;gap:.375rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:background .15s;display:inline-flex}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-danger{color:var(--danger);background:0 0}.btn-danger:hover{background:#fef2f2}.btn-sm{padding:.25rem .5rem;font-size:.8rem}.expense-item{border-bottom:1px solid var(--border);align-items:center;gap:1rem;padding:.75rem 0;display:flex}.expense-item:last-child{border-bottom:none}.expense-cat-icon{text-align:center;width:2rem;font-size:1.25rem}.expense-info{flex:1}.expense-info .desc{font-weight:500}.expense-info .meta{color:var(--text-muted);font-size:.8rem}.expense-amount{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.expense-actions{gap:.25rem;display:flex}.summary-total{text-align:center;padding:1rem 0;font-size:2rem;font-weight:700}.summary-bar{border-radius:var(--radius);height:2rem;margin:1rem 0;display:flex;overflow:hidden}.summary-bar-segment{transition:width .3s}.summary-item{align-items:center;gap:.75rem;padding:.5rem 0;font-size:.875rem;display:flex}.summary-item .dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.summary-item .name{flex:1}.summary-item .pct{color:var(--text-muted);text-align:right;width:3rem}.summary-item .amt{text-align:right;width:5rem;font-weight:600}.empty-state{text-align:center;color:var(--text-muted);padding:3rem 1rem}.empty-state .icon{margin-bottom:.5rem;font-size:3rem}.month-nav{justify-content:center;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.month-nav button{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:0 0;padding:.375rem .75rem;font-size:.9rem}.month-nav button:hover{background:var(--bg)}.month-nav .month-input{text-align:center;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;min-width:10rem;padding:.375rem .5rem;font-family:inherit;font-size:1rem;font-weight:600}.month-nav .month-input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #3b82f626}.category-dot{border-radius:50%;width:8px;height:8px;margin-right:.375rem;display:inline-block}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);padding:.5rem}th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.8rem;font-weight:600}.tag{color:#fff;border-radius:999px;padding:.125rem .5rem;font-size:.75rem;font-weight:500;display:inline-block}
