:root{--bg:#0f1117;--bg-card:#1a1d27;--bg-card-hover:#222633;--bg-input:#252836;--border:#2e3348;--text:#e4e6ef;--text-dim:#8b8fa3;--accent:#6366f1;--accent-hover:#818cf8;--green:#22c55e;--red:#ef4444;--yellow:#f59e0b;--radius:12px;--radius-sm:8px}*{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,Roboto,sans-serif}#root{min-height:100vh}.layout{min-height:100vh;display:flex}.sidebar{background:var(--bg-card);border-right:1px solid var(--border);z-index:10;flex-direction:column;gap:8px;width:240px;padding:24px 16px;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-logo{color:var(--accent);margin-bottom:16px;padding:8px 12px;font-size:1.25rem;font-weight:700}.sidebar-logo span{color:var(--text)}.sidebar a{border-radius:var(--radius-sm);color:var(--text-dim);align-items:center;gap:10px;padding:10px 12px;font-size:.9rem;text-decoration:none;transition:all .15s;display:flex}.sidebar a:hover{background:var(--bg-card-hover);color:var(--text)}.sidebar a.active{background:var(--accent);color:#fff}.sidebar-bottom{border-top:1px solid var(--border);margin-top:auto;padding-top:16px}.sidebar-user{color:var(--text-dim);padding:10px 12px;font-size:.85rem}.sidebar-user strong{color:var(--text);display:block}.main-content{flex:1;max-width:1200px;margin-left:240px;padding:32px}.page-title{margin-bottom:24px;font-size:1.5rem;font-weight:700}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.stat-cards{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px;display:grid}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.stat-card .label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;font-size:.8rem}.stat-card .value{font-size:1.75rem;font-weight:700}.stat-card .value.positive{color:var(--green)}.stat-card .value.negative{color:var(--red)}.charts-grid{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px;display:grid}.chart-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.chart-card h3{color:var(--text-dim);margin-bottom:16px;font-size:.95rem}.data-table{border-collapse:collapse;width:100%}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);border-bottom:1px solid var(--border);padding:10px 12px;font-size:.75rem}.data-table td{border-bottom:1px solid var(--border);padding:12px;font-size:.9rem}.data-table tr:hover{background:var(--bg-card-hover)}.category-badge{border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:.8rem;font-weight:500;display:inline-flex}.category-dot{border-radius:50%;width:8px;height:8px}.form-group{margin-bottom:16px}.form-group label{color:var(--text-dim);margin-bottom:6px;font-size:.85rem;display:block}input,select{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);outline:none;padding:10px 14px;font-size:.9rem;transition:border-color .15s}input:focus,select:focus{border-color:var(--accent)}.btn{border-radius:var(--radius-sm);cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 20px;font-size:.9rem;font-weight:600;transition:all .15s;display:inline-flex}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-danger{color:var(--red);border:1px solid var(--red);background:0 0}.btn-danger:hover{background:var(--red);color:#fff}.btn-ghost{color:var(--text-dim);background:0 0}.btn-ghost:hover{color:var(--text)}.btn-sm{padding:6px 12px;font-size:.8rem}.budget-item{margin-bottom:16px}.budget-header{justify-content:space-between;align-items:center;margin-bottom:6px;font-size:.9rem;display:flex}.budget-bar{background:var(--bg-input);border-radius:999px;height:8px;overflow:hidden}.budget-bar-fill{border-radius:999px;height:100%;transition:width .3s}.bill-item{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 0;display:flex}.bill-item:last-child{border-bottom:none}.bill-info{flex:1}.bill-name{font-size:.9rem;font-weight:600}.bill-due{color:var(--text-dim);font-size:.8rem}.bill-amount{font-size:.95rem;font-weight:700}.paid-badge{border-radius:999px;padding:2px 8px;font-size:.75rem;font-weight:600}.paid-badge.paid{color:var(--green);background:#22c55e20}.paid-badge.unpaid{color:var(--red);background:#ef444420}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:420px;padding:40px}.login-card h1{margin-bottom:8px;font-size:1.5rem}.login-card p{color:var(--text-dim);margin-bottom:24px;font-size:.9rem}.login-card .btn{width:100%}.login-toggle{text-align:center;color:var(--text-dim);margin-top:16px;font-size:.85rem}.login-toggle button{color:var(--accent);cursor:pointer;background:0 0;border:none;font-size:.85rem}.error-msg{color:var(--red);border-radius:var(--radius-sm);background:#ef444420;margin-bottom:16px;padding:10px 14px;font-size:.85rem}.page-toolbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.page-toolbar .filters{gap:8px;display:flex}.page-toolbar select,.page-toolbar input{width:auto}.modal-overlay{z-index:100;background:#0009;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:480px;padding:28px}.modal h2{margin-bottom:20px;font-size:1.2rem}.modal-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}@media (width<=768px){.sidebar{border-right:none;border-top:1px solid var(--border);flex-direction:row;gap:4px;width:100%;height:auto;padding:8px;position:fixed;inset:auto 0 0;overflow-x:auto}.sidebar-logo,.sidebar-bottom{display:none}.sidebar a{white-space:nowrap;padding:8px 12px;font-size:.8rem}.main-content{max-width:100%;margin-left:0;padding:20px 16px 80px}.charts-grid{grid-template-columns:1fr}.stat-cards{grid-template-columns:1fr 1fr}}
