*,:before,:after{box-sizing:border-box}html,body,#root{width:100%;min-height:100vh;margin:0;padding:0}body{background:var(--bg,#f8fafc);color:var(--text,#0f172a);-webkit-font-smoothing:antialiased;font-family:Inter,Segoe UI,system-ui,-apple-system,Arial,sans-serif}:root{--bg:#f5f7fb;--bg-elev:#fff;--surface:#fff;--surface-2:#f1f5f9;--text:#0f172a;--text-muted:#64748b;--border:#e2e8f0;--primary:#2563eb;--primary-hover:#1d4ed8;--danger:#ef4444;--danger-hover:#dc2626;--shadow-sm:0 1px 2px #0f172a0a;--shadow-md:0 6px 16px #0f172a14;--radius:12px;--radius-sm:8px}[data-theme=dark]{--bg:#0b1220;--bg-elev:#111a2e;--surface:#131c33;--surface-2:#1a253f;--text:#e2e8f0;--text-muted:#94a3b8;--border:#1e293b;--primary:#3b82f6;--primary-hover:#2563eb;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 8px 24px #0006}body{background:var(--bg);color:var(--text)}.app-shell{flex-direction:column;gap:16px;max-width:1100px;min-height:100vh;margin:0 auto;padding:16px;display:flex}.boot{min-height:100vh;color:var(--text-muted);justify-content:center;align-items:center;gap:10px;display:flex}.app-header{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.brand{color:var(--primary);align-items:center;gap:8px;font-size:1.1rem;font-weight:700;display:flex}.header-right{align-items:center;gap:8px;display:flex}.user-chip{flex-direction:column;align-items:flex-end;max-width:180px;padding:0 8px;line-height:1.1;display:flex}.user-name{text-overflow:ellipsis;white-space:nowrap;max-width:160px;font-size:.9rem;font-weight:600;overflow:hidden}.user-role{color:var(--text-muted);font-size:.72rem}.tabs-nav{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);scrollbar-width:thin;gap:4px;padding:6px;display:flex;overflow-x:auto}.tab-btn{color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:6px;padding:10px 14px;font-family:inherit;font-size:.9rem;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.tab-btn:hover{background:var(--surface-2);color:var(--text)}.tab-btn-active{background:var(--primary);color:#fff}.tab-btn-active:hover{background:var(--primary-hover);color:#fff}.app-main{flex:1;position:relative}.tab-content{flex-direction:column;gap:16px;display:flex}.tab-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.tab-title{align-items:center;gap:10px;display:flex}.tab-title h2{margin:0;font-size:1.4rem;font-weight:600}.month-picker{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:6px;padding:4px;display:inline-flex}.month-label{text-align:center;min-width:110px;padding:0 8px;font-size:.9rem;font-weight:600}.total-card{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--primary);border-radius:var(--radius);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.total-label{color:var(--text-muted);font-size:.9rem}.total-value{font-variant-numeric:tabular-nums;font-size:1.8rem;font-weight:700}.entry-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);grid-template-columns:1fr 140px 160px auto;gap:8px;padding:12px;display:grid}.input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);outline:none;padding:10px 12px;font-family:inherit;font-size:.95rem;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #3b82f626}.input-sm{padding:6px 10px;font-size:.85rem}.entries-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.entries-head,.entries-row{grid-template-columns:120px 1fr 160px 110px;align-items:center;gap:12px;padding:12px 16px;display:grid}.entries-head{background:var(--surface-2);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);font-size:.8rem;font-weight:600}.entries-row{border-bottom:1px solid var(--border);transition:background .15s}.entries-row:last-child{border-bottom:none}.entries-row:hover{background:var(--surface-2)}.cell-date{font-variant-numeric:tabular-nums;color:var(--text-muted);font-size:.9rem}.cell-desc{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.cell-value{font-variant-numeric:tabular-nums;font-weight:600}.cell-actions{justify-content:flex-end;gap:4px;display:inline-flex}.right{text-align:right;justify-self:end}.empty{text-align:center;background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius);color:var(--text-muted);padding:40px 20px;font-size:.95rem}.btn{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:10px 16px;font-family:inherit;font-size:.9rem;font-weight:600;transition:background .15s,color .15s,border-color .15s,transform 50ms;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-ghost{color:var(--text);border-color:var(--border);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-hover)}.btn-block{width:100%}.icon-btn{width:34px;height:34px;color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn-danger:hover{color:var(--danger);background:#ef44441f}.range-picker{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);gap:4px;padding:4px;display:inline-flex}.chip{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 12px;font-family:inherit;font-size:.85rem;font-weight:500}.chip:hover{background:var(--surface-2);color:var(--text)}.chip-active{background:var(--primary);color:#fff}.chip-active:hover{background:var(--primary-hover);color:#fff}.chart-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:20px}.chart-card h3{color:var(--text);margin:0 0 16px;font-size:1rem;font-weight:600}.report-table{flex-direction:column;display:flex}.report-head,.report-row{grid-template-columns:130px repeat(4,1fr);align-items:center;gap:12px;padding:10px 12px;display:grid}.report-head{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);border-bottom:1px solid var(--border);font-size:.78rem;font-weight:600}.report-row{border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;font-size:.9rem}.report-row:last-child{border-bottom:none}.report-row>.right{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.delta{border-radius:4px;padding:1px 6px;font-size:.72rem;font-weight:600}.delta-good{color:#059669;background:#10b9811f}.delta-bad{color:#dc2626;background:#ef44441f}.delta-neutral{color:var(--text-muted);background:var(--surface-2)}.modal-backdrop{z-index:100;background:#0f172a99;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:460px;box-shadow:var(--shadow-md);flex-direction:column;display:flex;overflow:hidden}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-head h3{margin:0;font-size:1.05rem;font-weight:600}.modal-body{color:var(--text);margin:0;padding:20px}.modal-form{flex-direction:column;gap:14px;display:flex}.modal-actions{background:var(--surface-2);border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:12px 20px;display:flex}.login-screen{background:linear-gradient(135deg, var(--bg), var(--surface-2));justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:380px;box-shadow:var(--shadow-md);flex-direction:column;gap:14px;padding:32px 28px;display:flex}.login-logo{color:var(--primary);justify-content:center;display:flex}.login-card h1{text-align:center;margin:0;font-size:1.6rem;font-weight:700}.login-sub{text-align:center;color:var(--text-muted);margin:0;font-size:.9rem}.field{flex-direction:column;gap:6px;display:flex}.field>span{color:var(--text-muted);font-size:.82rem;font-weight:600}.field-with-action{align-items:stretch;gap:6px;display:flex}.field-with-action .input{flex:1}.alert{color:#b91c1c;border-radius:var(--radius-sm);background:#ef44441f;border:1px solid #ef444459;padding:10px 12px;font-size:.88rem}[data-theme=dark] .alert{color:#fca5a5}.alert-toast{z-index:50;box-shadow:var(--shadow-md);margin-bottom:12px;position:sticky;top:0}.dev-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:16px}.dev-form h3{margin:0 0 12px;font-size:1rem;font-weight:600}.dev-form-grid{grid-template-columns:1fr 1fr 1fr 150px auto;gap:8px;display:grid}.dev-users-list{flex-direction:column;gap:8px;display:flex}.dev-user{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;gap:10px;padding:14px 16px;display:flex}.dev-user-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.dev-user-head>div{flex-direction:column;gap:2px;display:flex}.dev-user-email{color:var(--text-muted);font-size:.82rem}.dev-user-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.dev-user-actions .input{flex:1;min-width:180px}@media (width<=720px){.app-shell{gap:10px;padding:10px}.app-header{padding:10px 12px}.user-chip,.tab-btn span{display:none}.tab-btn{padding:10px 12px}.tab-btn-active span{display:inline}.tab-title h2{font-size:1.1rem}.total-value{font-size:1.4rem}.entry-form{grid-template-columns:1fr 1fr}.entry-form .input:first-child,.entry-form .btn{grid-column:1/-1}.entries-head{display:none}.entries-row{grid-template-columns:1fr auto;grid-template-areas:"desc value""date actions";gap:4px 12px;padding:12px}.cell-desc{grid-area:desc}.cell-value{grid-area:value}.cell-date{grid-area:date}.cell-actions{grid-area:actions}.report-head{display:none}.report-row{grid-template-columns:1fr 1fr;gap:6px;padding:12px}.report-row>span:first-child{color:var(--primary);border-bottom:1px dashed var(--border);grid-column:1/-1;margin-bottom:4px;padding-bottom:4px;font-weight:600}.report-row>.right{align-items:flex-end}.dev-form-grid{grid-template-columns:1fr}.chart-card{padding:14px}}
