@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";:root{--primary:#c2185b;--primary-dark:#880e4f;--primary-light:#e91e8c;--primary-glow:#c2185b38;--accent:#ad1457;--accent-2:#e91e8c;--bg-base:#fdf0f6;--bg-card:#fff;--bg-card-2:#fce4f0;--bg-input:#fff5fa;--bg-modal:#fff;--border:#c2185b21;--border-strong:#c2185b47;--text-primary:#2d0a1a;--text-secondary:#7b3055;--text-muted:#bf7fa0;--success:#0ba360;--success-bg:#0ba3601a;--danger:#e02d4f;--danger-bg:#e02d4f1a;--warning:#d97706;--warning-bg:#d977061a;--radius-sm:8px;--radius:14px;--radius-lg:20px;--radius-xl:28px;--shadow:0 4px 24px #2d0a1a17;--shadow-glow:0 0 32px #c2185b26;--nav-height:72px;--header-height:64px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{background:var(--bg-base);color:var(--text-primary);-webkit-font-smoothing:antialiased;max-width:430px;min-height:100dvh;margin:0 auto;font-family:Inter,system-ui,-apple-system,sans-serif;overflow-x:hidden}#app{min-height:100dvh;position:relative}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:2px}h1{font-size:1.75rem;font-weight:800}h2{font-size:1.375rem;font-weight:700}h3{font-size:1.125rem;font-weight:600}h4{font-size:.9375rem;font-weight:600}.page{padding:var(--header-height) 0 calc(var(--nav-height) + 16px);min-height:100dvh}.page-content{padding:20px 16px}.page-no-nav{min-height:100dvh}.app-header{width:100%;max-width:430px;height:var(--header-height);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border);z-index:100;background:#ffffffeb;justify-content:space-between;align-items:center;padding:0 20px;display:flex;position:fixed;top:0;left:50%;transform:translate(-50%)}.header-logo{align-items:center;gap:10px;display:flex}.header-logo-icon{background:linear-gradient(135deg, var(--primary), var(--accent));border-radius:var(--radius-sm);justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;display:flex}.header-logo-text{background:linear-gradient(135deg, var(--primary-dark) 0%, var(--primary-light) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.125rem;font-weight:800}.header-avatar{background:linear-gradient(135deg, var(--primary), var(--accent-2));color:#fff;cursor:pointer;border:2px solid var(--border-strong);border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:.75rem;font-weight:700;display:flex}.bottom-nav{width:100%;max-width:430px;height:var(--nav-height);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--border);z-index:100;background:#fffffff2;justify-content:space-around;align-items:center;padding:0 8px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-item{cursor:pointer;color:var(--text-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;padding:8px 0;text-decoration:none;transition:color .2s;display:flex;position:relative}.nav-item.active{color:var(--primary-light)}.nav-item.active:before{content:"";background:linear-gradient(90deg, var(--primary), var(--accent));border-radius:0 0 4px 4px;width:32px;height:2px;position:absolute;top:0}.nav-icon{font-size:22px;transition:transform .2s}.nav-item.active .nav-icon{transform:translateY(-2px)}.nav-label{letter-spacing:.3px;font-size:.65rem;font-weight:500}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;position:relative;overflow:hidden}.card-glow{box-shadow:var(--shadow-glow)}.card-gradient{background:linear-gradient(135deg, var(--bg-card) 0%, var(--bg-card-2) 100%)}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;transition:transform .2s,box-shadow .2s;position:relative;overflow:hidden}.stat-card:active{transform:scale(.98)}.stat-card:after{content:"";filter:blur(30px);opacity:.4;border-radius:50%;width:80px;height:80px;position:absolute;top:0;right:0}.stat-card.blue:after{background:var(--primary)}.stat-card.green:after{background:var(--success)}.stat-card.red:after{background:var(--danger)}.stat-card.orange:after{background:var(--warning)}.stat-icon{margin-bottom:8px;font-size:28px;display:block}.stat-label{color:var(--text-secondary);margin-bottom:4px;font-size:.75rem;font-weight:500}.stat-value{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:1.25rem;font-weight:800;overflow:hidden}.stat-sub{color:var(--text-muted);margin-top:4px;font-size:.7rem}.payment-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;align-items:center;gap:14px;margin-bottom:10px;padding:14px 16px;transition:all .2s;display:flex;position:relative;overflow:hidden}.payment-card:active{background:var(--bg-card-2);transform:scale(.99)}.payment-card.lunas{border-left:3px solid var(--success)}.payment-card.belum{border-left:3px solid var(--danger)}.payment-avatar{background:linear-gradient(135deg, var(--primary), var(--accent-2));color:#fff;border-radius:12px;justify-content:center;align-items:center;width:44px;min-width:44px;height:44px;font-size:1rem;font-weight:700;display:flex}.payment-info{flex:1;min-width:0}.payment-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.payment-paket{color:var(--text-secondary);margin-top:2px;font-size:.72rem}.payment-right{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.payment-amount{color:var(--text-primary);font-size:.875rem;font-weight:700}.badge{white-space:nowrap;border-radius:20px;padding:3px 8px;font-size:.65rem;font-weight:600}.badge-success{background:var(--success-bg);color:var(--success)}.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge-primary{color:var(--primary-dark);background:#c2185b1f}.btn{border-radius:var(--radius);cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border:none;justify-content:center;align-items:center;gap:8px;width:100%;padding:14px 20px;font-family:Inter,sans-serif;font-size:.9375rem;font-weight:600;transition:all .2s;display:flex}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(135deg, var(--primary), var(--primary-light));color:#fff;box-shadow:0 4px 20px var(--primary-glow)}.btn-primary:hover{box-shadow:0 6px 28px #e91e8c73}.btn-outline{color:var(--text-secondary);border:1px solid var(--border-strong);background:0 0}.btn-ghost{color:var(--primary-light);border:1px solid var(--border);background:#e91e8c1a}.btn-success{background:linear-gradient(135deg, #0bb86e, var(--success));color:#fff}.btn-danger{background:var(--danger-bg);color:var(--danger);border:1px solid #ff4f704d}.btn-sm{border-radius:var(--radius-sm);width:auto;padding:8px 14px;font-size:.8rem}.btn-fingerprint{color:var(--text-secondary);border:1px solid var(--border-strong);background:linear-gradient(135deg,#fce4f0,#f8c8e0);flex-direction:column;gap:6px;padding:18px;font-size:.8rem}.btn-fingerprint .fp-icon{font-size:2.5rem;line-height:1}.form-group{margin-bottom:16px}.form-label{color:var(--text-secondary);margin-bottom:8px;font-size:.8rem;font-weight:500;display:block}.form-input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);outline:none;padding:14px 16px;font-family:Inter,sans-serif;font-size:.9375rem;transition:border-color .2s,box-shadow .2s}.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow)}.form-input::placeholder{color:var(--text-muted)}.input-wrapper{position:relative}.input-icon{color:var(--text-muted);pointer-events:none;font-size:18px;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.input-wrapper .form-input{padding-left:44px}.input-toggle{cursor:pointer;color:var(--text-muted);-webkit-tap-highlight-color:transparent;background:0 0;border:none;padding:4px;font-size:18px;position:absolute;top:50%;right:14px;transform:translateY(-50%)}.section-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:12px;font-size:.75rem;font-weight:600}.flex-between{justify-content:space-between;align-items:center;display:flex}.hero-banner{background:linear-gradient(135deg, var(--primary-dark) 0%, #c2185b 50%, #e91e8c 100%);border-radius:var(--radius-lg);margin-bottom:24px;padding:24px 20px;position:relative;overflow:hidden}.hero-banner:before{content:"";background:radial-gradient(circle,#ff40c040 0%,#0000 70%);border-radius:50%;width:160px;height:160px;position:absolute;top:-40px;right:-40px}.hero-banner:after{content:"";background:radial-gradient(circle,#e91e8c4d 0%,#0000 70%);border-radius:50%;width:120px;height:120px;position:absolute;bottom:-30px;left:-30px}.hero-greeting{color:#fff9;margin-bottom:4px;font-size:.8rem}.hero-name{color:#fff;margin-bottom:16px;font-size:1.375rem;font-weight:800}.hero-period{color:#ffffff80;margin-bottom:4px;font-size:.75rem}.hero-total{color:#fff;font-size:2rem;font-weight:800;line-height:1}.hero-total-label{color:var(--accent);margin-top:4px;font-size:.75rem;font-weight:500}.chart-container{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:24px;padding:16px}.chart-bars{align-items:flex-end;gap:8px;height:100px;margin-bottom:8px;display:flex}.chart-bar-wrap{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:4px;height:100%;display:flex}.chart-bar-bg{background:#c2185b12;border-radius:4px 4px 0 0;flex-direction:column;justify-content:flex-end;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.chart-bar-fill{background:linear-gradient(180deg, var(--accent) 0%, var(--primary) 100%);border-radius:3px 3px 0 0;width:100%;min-height:4px;transition:height 1s cubic-bezier(.34,1.56,.64,1);position:relative}.chart-bar-label{color:var(--text-muted);text-align:center;font-size:.6rem}.filter-pills{scrollbar-width:none;gap:8px;margin-bottom:16px;padding-bottom:4px;display:flex;overflow-x:auto}.filter-pills::-webkit-scrollbar{display:none}.filter-pill{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:20px;padding:7px 16px;font-family:Inter,sans-serif;font-size:.8rem;font-weight:500;transition:all .2s}.filter-pill.active{background:var(--primary);border-color:var(--primary);color:#fff}.progress-bar{background:#c2185b14;border-radius:3px;width:100%;height:6px;margin-top:8px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--primary), var(--accent));border-radius:3px;height:100%;transition:width 1s cubic-bezier(.34,1.56,.64,1)}.sheet-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;background:#2d0a1a80;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--bg-modal);border-radius:var(--radius-xl) var(--radius-xl) 0 0;border-top:1px solid var(--border-strong);width:100%;max-width:430px;padding:24px 20px 40px;position:relative}.sheet-handle{background:var(--border-strong);border-radius:2px;width:40px;height:4px;margin:0 auto 20px}.sheet-title{margin-bottom:20px;font-size:1.125rem;font-weight:700}.toast{background:var(--bg-card-2);border:1px solid var(--border-strong);border-radius:var(--radius);z-index:300;white-space:nowrap;box-shadow:var(--shadow);align-items:center;gap:8px;padding:12px 20px;font-size:.875rem;font-weight:500;animation:.3s slideDown;display:flex;position:fixed;top:80px;left:50%;transform:translate(-50%)}@keyframes slideDown{0%{opacity:0;transform:translate(-50%)translateY(-12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.divider{border:none;border-top:1px solid var(--border);margin:16px 0}.empty-state{text-align:center;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 24px;display:flex}.empty-icon{opacity:.5;font-size:3rem}.fade-enter-active,.fade-leave-active{transition:opacity .25s}.fade-enter-from,.fade-leave-to{opacity:0}.slide-up-enter-active,.slide-up-leave-active{transition:all .3s cubic-bezier(.34,1.56,.64,1)}.slide-up-enter-from,.slide-up-leave-to{opacity:0;transform:translateY(40px)}.page-enter-active{transition:all .3s}.page-enter-from{opacity:0;transform:translate(20px)}
