:root{--primary: #3525cd;--primary-hover: #4f46e5;--sidebar-bg: #0F172A;--surface-bg: #F8FAFC;--income: #10B981;--expense: #F43F5E;--pending: #F59E0B;--warning-orange: #F97316;--info-blue: #3B82F6;--success-dark: #059669;--danger-dark: #E11D48;--on-surface: #1b1b24;--on-surface-variant: #464555;--outline: #777587;--outline-variant: #c7c4d8;--s50: #f8fafc;--s100: #f1f5f9;--s200: #e2e8f0;--s300: #cbd5e1;--s400: #94a3b8;--s500: #64748b;--s600: #475569;--s700: #334155;--s800: #1e293b;--s900: #0f172a;--font-j: "Plus Jakarta Sans", sans-serif;--font-i: "Inter", sans-serif;--sidebar-w: 240px;--pad: 32px;--r-sm: 4px;--r-md: 8px;--r-lg: 12px;--r-xl: 16px;--r-2xl: 20px;--r-full: 9999px;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow: 0 1px 3px rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--shadow-md: 0 4px 6px -1px rgba(0,0,0,.1);--shadow-2xl: 0 25px 50px -12px rgba(0,0,0,.25)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{font-family:var(--font-i);font-size:15px;line-height:1.6;color:var(--on-surface);background:var(--surface-bg);-webkit-font-smoothing:antialiased}a{text-decoration:none;color:inherit}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}.material-symbols-outlined{font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;display:inline-flex;align-items:center;line-height:1;-webkit-user-select:none;user-select:none;vertical-align:middle}.layout{display:flex;min-height:100vh}.sidebar{position:fixed;top:0;left:0;height:100vh;width:var(--sidebar-w);background:var(--sidebar-bg);display:flex;flex-direction:column;border-right:1px solid rgba(255,255,255,.06);box-shadow:var(--shadow-2xl);z-index:40}.sidebar-logo{display:flex;align-items:center;gap:12px;padding:24px 22px 20px}.sidebar-logo-icon{width:34px;height:34px;background:var(--primary-hover);border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-logo-icon .material-symbols-outlined{color:#fff;font-size:18px}.sidebar-logo-text{font-family:var(--font-j);font-size:18px;font-weight:700;color:#fff;letter-spacing:-.01em}.sidebar-nav{flex:1;padding:6px 10px;display:flex;flex-direction:column;gap:2px;overflow-y:auto}.nav-link{display:flex;align-items:center;gap:11px;padding:9px 13px;border-radius:var(--r-md);color:#94a3b8;font-size:14px;font-weight:500;font-family:var(--font-i);transition:all .15s;border-left:2px solid transparent}.nav-link:hover{color:#e2e8f0;background:#ffffff0f}.nav-link.active{color:#fff;background:#4f46e524;border-left-color:var(--primary-hover)}.nav-link .material-symbols-outlined{font-size:20px;flex-shrink:0}.sidebar-footer{padding:14px 14px 18px;border-top:1px solid rgba(255,255,255,.08)}.sidebar-user{display:flex;align-items:center;gap:10px;padding:6px 6px 10px}.user-avatar{width:32px;height:32px;border-radius:50%;background:var(--primary-hover);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--font-j)}.user-name{font-size:13px;font-weight:500;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-actions{display:flex;gap:6px}.sidebar-icon-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--r-md);border:none;background:#ffffff14;color:#94a3b8;transition:all .15s}.sidebar-icon-btn:hover{background:#ffffff24;color:#e2e8f0}.sidebar-icon-btn.danger:hover{background:#f43f5e26;color:#f43f5e}.sidebar-icon-btn .material-symbols-outlined{font-size:18px}.main-content{margin-left:var(--sidebar-w);flex:1;min-height:100vh;background:var(--surface-bg)}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:var(--pad) var(--pad) 0;margin-bottom:24px}.page-title{font-family:var(--font-j);font-size:28px;font-weight:700;color:var(--on-surface);line-height:1.2;letter-spacing:-.01em;margin:0}.page-subtitle{font-size:14px;color:var(--outline);margin-top:4px}.page-body{padding:0 var(--pad) var(--pad)}.dashboard-controls{padding:0 var(--pad) 24px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.month-nav{display:flex;align-items:center;gap:4px;background:#fff;border:1px solid var(--s200);border-radius:var(--r-xl);padding:4px;box-shadow:var(--shadow-sm)}.month-nav-label{font-family:var(--font-j);font-size:14px;font-weight:600;color:var(--s700);min-width:120px;text-align:center;padding:0 8px}.month-nav-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;background:transparent;border-radius:var(--r-md);color:var(--s600);transition:background .15s}.month-nav-btn:hover{background:var(--s100)}.month-nav-btn .material-symbols-outlined{font-size:18px}.toggle-values-btn{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border:1px solid var(--s200);border-radius:var(--r-xl);font-size:14px;font-weight:600;color:var(--s700);box-shadow:var(--shadow-sm);cursor:pointer;transition:background .15s}.toggle-values-btn:hover{background:var(--s50)}.toggle-values-btn .material-symbols-outlined{font-size:18px;color:var(--s500)}.metrics-section{padding:0 var(--pad)}.metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:18px}.metrics-grid-2{display:grid;grid-template-columns:1fr 2fr;gap:18px;margin-bottom:28px}.metric-card{background:#fff;border:1px solid var(--s200);border-radius:18px;padding:24px;position:relative;overflow:hidden;box-shadow:var(--shadow-sm);transition:transform .2s ease,box-shadow .2s ease}.metric-card:hover{transform:translateY(-3px);box-shadow:0 10px 20px -8px #0000001a}.metric-card-accent{position:absolute;top:0;left:0;width:4px;height:100%}.metric-card-label{display:block;font-family:var(--font-i);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--s500);margin-bottom:14px}.metric-card-value{font-family:var(--font-j);font-size:32px;font-weight:700;line-height:1.1;letter-spacing:-.02em;color:var(--on-surface);word-break:break-all}.metric-card-icon{position:absolute;bottom:-8px;right:-8px;font-size:72px!important;opacity:.08;transition:transform .2s ease,opacity .2s ease;pointer-events:none;line-height:1}.metric-card:hover .metric-card-icon{opacity:.13;transform:scale(1.06)}.value-hidden{filter:blur(7px);-webkit-user-select:none;user-select:none}.info-box{background:var(--s900);color:#ffffffbf;border-radius:14px;padding:16px 20px;font-size:13px;line-height:1.6}.info-box strong{color:#fff}.filter-bar{background:#fff;border:1px solid var(--s200);border-radius:var(--r-xl);padding:16px 20px;margin-bottom:18px;box-shadow:var(--shadow-sm)}.filter-row{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end}.filter-group{display:flex;flex-direction:column;gap:5px;min-width:110px;flex:1}.filter-label{font-family:var(--font-i);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--outline)}.card{background:#fff;border:1px solid var(--s200);border-radius:var(--r-xl);box-shadow:var(--shadow-sm);overflow:hidden}.table-container{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-family:var(--font-i);font-size:14px}.table thead tr{background:var(--s50);border-bottom:1px solid var(--s200)}.table thead th{padding:13px 20px;text-align:left;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--outline);white-space:nowrap}.table tbody tr{border-bottom:1px solid #f1f5f9;transition:background .1s;height:56px}.table tbody tr:hover{background:var(--s50)}.table tbody tr:last-child{border-bottom:none}.table td{padding:11px 20px;vertical-align:middle}.table-striped tbody tr:nth-child(2n){background:#f8fafc99}.table-actions{display:flex;gap:6px;align-items:center}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:var(--r-full);font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}.badge-success{background:#10b9811f;color:var(--success-dark)}.badge-danger{background:#f43f5e1f;color:var(--danger-dark)}.badge-warning{background:#f59e0b1f;color:#b45309}.badge-info{background:#3b82f61f;color:#1d4ed8}.badge-secondary{background:var(--s100);color:var(--s600)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 18px;border-radius:var(--r-md);font-family:var(--font-i);font-size:14px;font-weight:600;border:none;cursor:pointer;transition:all .15s;white-space:nowrap;line-height:1}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn .material-symbols-outlined{font-size:18px}.btn-primary{background:var(--primary-hover);color:#fff;box-shadow:0 2px 8px #4f46e54d}.btn-primary:hover:not(:disabled){background:var(--primary)}.btn-secondary{background:var(--s100);color:var(--s700);border:1px solid var(--s200)}.btn-secondary:hover:not(:disabled){background:var(--s200)}.btn-danger{background:#f43f5e1a;color:var(--danger-dark);border:1px solid rgba(244,63,94,.2)}.btn-danger:hover:not(:disabled){background:#f43f5e2e}.btn-success{background:#10b9811a;color:var(--success-dark);border:1px solid rgba(16,185,129,.2)}.btn-success:hover:not(:disabled){background:#10b9812e}.btn-warning{background:#f59e0b1a;color:#b45309;border:1px solid rgba(245,158,11,.2)}.btn-warning:hover:not(:disabled){background:#f59e0b2e}.btn-sm{padding:5px 12px;font-size:12px}.w-100{width:100%}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.form-group{display:flex;flex-direction:column;gap:6px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}.form-label{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--outline);font-family:var(--font-i)}.form-label.required:after{content:"*";color:var(--expense);margin-left:3px}.form-control{padding:9px 13px;border:1px solid var(--outline-variant);border-radius:var(--r-md);font-size:14px;font-family:var(--font-i);color:var(--on-surface);background:#fff;transition:border-color .15s,box-shadow .15s;outline:none;width:100%}.form-control:focus{border-color:var(--primary-hover);box-shadow:0 0 0 3px #4f46e51f}.form-control.is-invalid{border-color:var(--expense)}.form-control.is-invalid:focus{box-shadow:0 0 0 3px #f43f5e1f}.form-error{font-size:12px;color:var(--expense);font-weight:500}.alert{padding:11px 15px;border-radius:var(--r-md);font-size:14px;font-weight:500;margin-bottom:16px}.alert-error{background:#f43f5e14;color:var(--danger-dark);border:1px solid rgba(244,63,94,.2)}.alert-success{background:#10b98114;color:var(--success-dark);border:1px solid rgba(16,185,129,.2)}.loading{display:flex;align-items:center;justify-content:center;gap:12px;padding:60px 20px;color:var(--outline);font-size:14px}.spinner{width:20px;height:20px;border:2px solid var(--outline-variant);border-top-color:var(--primary-hover);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:60px 20px;color:var(--outline)}.empty-state-icon .material-symbols-outlined{font-size:48px;color:var(--outline-variant)}.empty-state-text{font-size:14px;color:var(--outline);font-weight:500}.text-muted{color:var(--outline);font-size:13px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:50;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:#fff;border-radius:var(--r-2xl);box-shadow:var(--shadow-2xl);width:100%;max-width:520px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.modal-lg{max-width:680px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--s100)}.modal-header h3{font-family:var(--font-j);font-size:18px;font-weight:700;color:var(--on-surface)}.btn-close{width:32px;height:32px;border:none;background:var(--s100);border-radius:50%;font-size:18px;color:var(--s500);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s}.btn-close:hover{background:var(--s200)}.modal-body{padding:20px 24px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:14px}.modal-footer{padding:14px 24px;border-top:1px solid var(--s100);display:flex;justify-content:flex-end;gap:10px;background:#f8fafc99}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a66;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:45}.drawer{position:fixed;top:0;right:0;height:100%;width:min(640px,100vw);background:#fff;box-shadow:var(--shadow-2xl);z-index:50;display:flex;flex-direction:column;animation:slideIn .28s ease}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.drawer-header{display:flex;align-items:flex-start;justify-content:space-between;padding:22px 28px;border-bottom:1px solid var(--s100);flex-shrink:0}.drawer-title{font-family:var(--font-j);font-size:20px;font-weight:700;color:var(--on-surface)}.drawer-subtitle{font-size:13px;color:var(--s500);margin-top:3px}.drawer-close{width:34px;height:34px;border:none;background:transparent;border-radius:50%;color:var(--s400);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s;flex-shrink:0}.drawer-close:hover{background:var(--s100);color:var(--s700)}.drawer-body{flex:1;overflow-y:auto;padding:24px 28px;display:flex;flex-direction:column;gap:24px}.drawer-footer{padding:14px 28px;border-top:1px solid var(--s100);display:flex;justify-content:flex-end;gap:10px;background:#f8fafc99;flex-shrink:0}.drawer-section-label{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--s400);margin-bottom:10px;font-family:var(--font-i)}.type-selector{display:grid;grid-template-columns:1fr 1fr;gap:10px}.type-card{display:flex;flex-direction:column;align-items:flex-start;padding:14px;border:2px solid var(--s200);border-radius:var(--r-xl);background:#fff;cursor:pointer;transition:all .15s;text-align:left}.type-card:hover{border-color:var(--s300);background:var(--s50)}.type-card.selected{border-color:var(--primary-hover);background:#4f46e50a}.type-card-icon{width:38px;height:38px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;margin-bottom:8px;background:var(--s100);flex-shrink:0}.type-card-icon .material-symbols-outlined{font-size:20px;color:var(--s400)}.type-card.selected .type-card-icon{background:var(--primary-hover)}.type-card.selected .type-card-icon .material-symbols-outlined{color:#fff}.type-card-label{font-family:var(--font-j);font-size:14px;font-weight:700;color:var(--on-surface)}.type-card-desc{font-size:12px;color:var(--s500);margin-top:2px}.value-input-wrap{position:relative}.value-input-prefix{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-family:var(--font-j);font-size:18px;font-weight:700;color:var(--s400);pointer-events:none}.value-input{width:100%;padding:14px 14px 14px 52px;background:var(--s50);border:2px solid transparent;border-radius:var(--r-xl);font-family:var(--font-j);font-size:30px;font-weight:700;color:var(--primary-hover);letter-spacing:-.02em;outline:none;transition:border-color .15s,box-shadow .15s}.value-input:focus{border-color:var(--primary-hover);box-shadow:0 0 0 3px #4f46e51a}.value-input.is-invalid{border-color:var(--expense)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f172a,#1e293b 60%,#0f172a);padding:20px}.login-card{background:#fff;border-radius:24px;padding:44px 40px;width:100%;max-width:400px;box-shadow:0 25px 50px #00000073}.login-logo{width:50px;height:50px;background:var(--primary-hover);border-radius:14px;display:flex;align-items:center;justify-content:center;margin-bottom:22px}.login-logo .material-symbols-outlined{font-size:26px;color:#fff}.login-title{font-family:var(--font-j);font-size:24px;font-weight:800;color:var(--on-surface);margin-bottom:5px}.login-subtitle{font-size:14px;color:var(--outline);margin-bottom:26px}.login-card .form-group{margin-bottom:14px}.help-content h4{font-family:var(--font-j);font-size:15px;font-weight:700;color:var(--on-surface);margin-top:18px;margin-bottom:7px}.help-content h4:first-child{margin-top:0}.help-content p,.help-content ul{font-size:14px;color:var(--on-surface-variant);line-height:1.65}.help-content ul{padding-left:18px}
