:root{--color-primary:#1b263b;--color-success:#2d6a4f;--color-action:#0077b6;--color-alert:#e63946;--color-bg:#e0e1dd;--color-surface:#fff;--color-text:#415a77;--color-text-dim:#778da9;--color-border:#c8cac4;--radius-card:12px;--radius-btn:8px;--shadow-card:0 2px 8px #1b263b14;--shadow-hover:0 4px 16px #1b263b24;--transition:all .2s ease;--font-body:"DM Sans", system-ui, sans-serif;--font-display:"DM Serif Display", Georgia, serif;--sidebar-width:220px;--topbar-height:60px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-body);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;font-size:14px}h1,h2,h3,h4,h5,h6{color:var(--color-primary);font-weight:600}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:var(--font-body)}input,select,textarea{font-family:var(--font-body)}.app-shell{height:100%;display:flex}.main-content{margin-left:var(--sidebar-width);flex-direction:column;flex:1;min-height:100%;display:flex}.page-body{margin-top:var(--topbar-height);flex:1;padding:24px}.sidebar{width:var(--sidebar-width);background:var(--color-primary);z-index:100;height:100%;transition:var(--transition);flex-direction:column;display:flex;position:fixed;top:0;left:0}.sidebar-logo{border-bottom:1px solid #ffffff14;padding:20px 16px}.sidebar-logo h2{color:#fff;letter-spacing:.3px;font-size:16px;font-weight:700}.sidebar-logo span{color:#ffffff73;margin-top:2px;font-size:11px;font-weight:400;display:block}.sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:12px 8px;display:flex}.nav-item{color:#fff9;transition:var(--transition);text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;width:100%;padding:10px 12px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.nav-item:hover{color:#fff;background:#ffffff14}.nav-item.active{color:#fff;background:#ffffff1f}.nav-icon{flex-shrink:0;font-size:18px}.topbar{top:0;left:var(--sidebar-width);height:var(--topbar-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:90;justify-content:space-between;align-items:center;padding:0 24px;display:flex;position:fixed;right:0;box-shadow:0 1px 4px #1b263b0f}.topbar-left h3{color:var(--color-primary);font-size:15px;font-weight:600}.topbar-left span{color:var(--color-text-dim);font-size:12px}.topbar-right{align-items:center;gap:12px;display:flex}.card{background:var(--color-surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);transition:var(--transition);padding:20px}.card:hover{box-shadow:var(--shadow-hover)}.summary-grid{grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px;display:grid}.summary-card{background:var(--color-surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);transition:var(--transition);flex-direction:column;gap:6px;padding:20px 24px;display:flex}.summary-card:hover{box-shadow:var(--shadow-hover)}.summary-card .label{color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.6px;font-size:12px;font-weight:500}.summary-card .value{font-family:var(--font-display);color:var(--color-primary);font-size:32px;line-height:1.1}.summary-card .value.alert{color:var(--color-alert)}.summary-card .value.success{color:var(--color-success)}.summary-card .sub{color:var(--color-text-dim);margin-top:2px;font-size:12px}.dashboard-mid{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px;display:grid}.transaction-list{flex-direction:column;gap:2px;display:flex}.transaction-item{transition:var(--transition);border-radius:8px;align-items:center;gap:12px;padding:12px 16px;display:flex}.transaction-item:hover{background:var(--color-bg)}.tx-avatar{background:var(--color-bg);width:38px;height:38px;color:var(--color-primary);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;font-weight:700;display:flex}.tx-info{flex:1;min-width:0}.tx-name{color:var(--color-primary);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.tx-meta{color:var(--color-text-dim);margin-top:2px;font-size:12px}.tx-amount{color:var(--color-primary);font-size:15px;font-weight:600;font-family:var(--font-display);white-space:nowrap}.btn{border-radius:var(--radius-btn);transition:var(--transition);cursor:pointer;border:none;align-items:center;gap:6px;padding:8px 16px;font-size:14px;font-weight:500;display:inline-flex}.btn-primary{background:var(--color-action);color:#fff}.btn-primary:hover{background:#005f91}.btn-danger{background:var(--color-alert);color:#fff}.btn-danger:hover{background:#c62b37}.btn-ghost{color:var(--color-text);border:1px solid var(--color-border);background:0 0}.btn-ghost:hover{background:var(--color-bg)}.btn-sm{padding:5px 10px;font-size:12px}.form-group{flex-direction:column;gap:5px;margin-bottom:14px;display:flex}.form-group label{color:var(--color-primary);font-size:13px;font-weight:500}.form-control{border:1px solid var(--color-border);border-radius:var(--radius-btn);color:var(--color-primary);background:var(--color-surface);transition:var(--transition);outline:none;width:100%;padding:9px 12px;font-size:14px}.form-control:focus{border-color:var(--color-action);box-shadow:0 0 0 3px #0077b61f}.auth-page{background:var(--color-bg);justify-content:center;align-items:center;min-height:100%;padding:24px;display:flex}.auth-card{background:var(--color-surface);border-radius:var(--radius-card);box-shadow:var(--shadow-hover);width:100%;max-width:400px;padding:36px 32px}.auth-card h1{margin-bottom:6px;font-size:24px}.auth-card .subtitle{color:var(--color-text-dim);margin-bottom:24px;font-size:14px}.auth-link{text-align:center;color:var(--color-text-dim);margin-top:16px;font-size:13px}.auth-link a{color:var(--color-action);font-weight:500}.auth-link a:hover{text-decoration:underline}.lang-toggle{border:1px solid var(--color-border);border-radius:6px;display:flex;overflow:hidden}.lang-toggle button{color:var(--color-text-dim);transition:var(--transition);background:0 0;border:none;padding:4px 10px;font-size:12px;font-weight:500}.lang-toggle button.active{background:var(--color-primary);color:#fff}.badge{background:var(--color-bg);color:var(--color-text);border-radius:20px;padding:2px 8px;font-size:11px;font-weight:500;display:inline-block}.data-table{border-collapse:collapse;width:100%}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.6px;color:var(--color-text-dim);border-bottom:1px solid var(--color-border);padding:8px 12px;font-size:11px;font-weight:600}.data-table td{color:var(--color-text);border-bottom:1px solid var(--color-bg);padding:11px 12px;font-size:14px}.data-table tr:hover td{background:var(--color-bg)}.data-table tr:last-child td{border-bottom:none}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{background:linear-gradient(90deg,#e0e0e0 25%,#f0f0f0 50%,#e0e0e0 75%) 0 0/800px 100%;border-radius:6px;animation:1.4s infinite shimmer}.empty-state{text-align:center;color:var(--color-text-dim);padding:48px 24px}.empty-state .empty-icon{margin-bottom:12px;font-size:40px}.empty-state h3{color:var(--color-text);margin-bottom:6px}.empty-state p{font-size:13px}.alert-badge{color:var(--color-alert);background:#e639461a;border-radius:20px;align-items:center;gap:4px;padding:3px 8px;font-size:11px;font-weight:600;display:inline-flex}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.page-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.page-header h2{font-size:20px}.error-banner{color:var(--color-alert);border-radius:var(--radius-btn);background:#e6394614;border:1px solid #e639464d;margin-bottom:14px;padding:10px 14px;font-size:13px}.success-banner{color:var(--color-success);border-radius:var(--radius-btn);background:#2d6a4f14;border:1px solid #2d6a4f4d;margin-bottom:14px;padding:10px 14px;font-size:13px}.modal-overlay{z-index:200;background:#1b263b66;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius-card);width:100%;max-width:440px;padding:28px;box-shadow:0 8px 32px #1b263b33}.modal h3{margin-bottom:16px}.modal-label{text-transform:uppercase;letter-spacing:.6px;color:var(--color-text-dim);margin-bottom:8px;font-size:12px;font-weight:600}.chip-row{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:var(--transition);border-radius:20px;padding:5px 12px;font-size:13px;font-weight:500}.chip:hover{border-color:var(--color-action);color:var(--color-action)}.chip-active{background:var(--color-action);border-color:var(--color-action);color:#fff}.chip-active:hover{color:#fff;background:#005f91;border-color:#005f91}.month-header{justify-content:space-between;align-items:baseline;margin-bottom:8px;padding-left:4px;display:flex}.month-header-title{color:var(--color-primary);font-size:15px;font-weight:600}.month-header-total{color:var(--color-text-dim);font-size:13px;font-family:var(--font-display)}@media (width<=768px){:root{--sidebar-width:0px}.sidebar{transform:translate(-220px)}.sidebar.open{--sidebar-width:220px;transform:translate(0)}.main-content{margin-left:0}.topbar{left:0}.summary-grid,.dashboard-mid{grid-template-columns:1fr}}
