:root{--bg: #f1f5f9;--surface: #ffffff;--surface-2: #f8fafc;--border: #e2e8f0;--text: #0f172a;--text-muted: #64748b;--primary: #2563eb;--primary-hover: #1d4ed8;--primary-soft: #dbeafe;--danger: #e11d48;--danger-soft: #ffe4e6;--success: #059669;--success-soft: #d1fae5;--hutang: #e11d48;--piutang: #059669;--amber: #d97706;--amber-soft: #fef3c7;--radius: 14px;--shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 1px 3px rgba(15, 23, 42, .08);--shadow-lg: 0 10px 30px rgba(15, 23, 42, .16);--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}@media(prefers-color-scheme:dark){:root{--bg: #0f172a;--surface: #1e293b;--surface-2: #293548;--border: #334155;--text: #f1f5f9;--text-muted: #94a3b8;--primary: #3b82f6;--primary-hover: #60a5fa;--primary-soft: #1e3a5f;--danger-soft: #3b1d2e;--success-soft: #123b2e;--amber-soft: #3a2f16;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 1px 3px rgba(0, 0, 0, .5);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .5)}.app-header{background:#0b1220}.auth-form input:focus,.modal form input:focus,.modal form select:focus{background:var(--surface-2)}.entry-card:active{background:#1a2536}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.5;min-height:100vh;-webkit-font-smoothing:antialiased}[hidden]{display:none!important}a{color:inherit;text-decoration:none}h1,h2,h3,h4{margin:0;font-weight:700}p{margin:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;border-radius:10px;padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .05s;white-space:nowrap;min-height:44px}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-ghost{background:transparent;color:var(--text-muted)}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn-outline{background:transparent;border-color:var(--border);color:var(--text-muted)}.btn-outline:hover{border-color:var(--primary);color:var(--primary)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#be123c}.btn-outline-danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn-outline-danger:hover{background:var(--danger-soft)}.btn-success{background:var(--success-soft);color:var(--success)}.btn-success:hover{background:#a7f3d0}.btn-small{padding:6px 10px;font-size:12.5px;border-radius:8px;min-height:36px}.hide-on-mobile{display:none}@media(min-width:640px){.hide-on-mobile{display:inline-flex}}.toast{position:fixed;bottom:100px;left:50%;transform:translate(-50%) translateY(100px);background:var(--text);color:var(--surface);padding:12px 20px;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 20px #0f172a4d;z-index:60;opacity:0;pointer-events:none;transition:transform .2s ease,opacity .2s ease}.toast.show{opacity:1;transform:translate(-50%) translateY(0);pointer-events:auto}@media(max-width:639px){.toast{bottom:150px}}.icon-btn{background:transparent;border:none;cursor:pointer;font-size:24px;line-height:1;color:var(--text-muted);padding:0 4px}.app-header{position:sticky;top:0;z-index:20;background:#0f172a;color:#fff}.app-header-inner{max-width:960px;margin:0 auto;display:flex;align-items:center;gap:12px;padding:10px 16px;flex-wrap:wrap}.brand-link{display:flex;align-items:center;gap:8px;font-weight:700;margin-right:auto}.brand-logo{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:var(--primary);color:#fff;font-size:13px;font-weight:800}.main-nav{display:flex;gap:4px}.nav-link{padding:7px 12px;border-radius:8px;font-size:14px;font-weight:600;color:#cbd5e1}.nav-link:hover{color:#fff;background:#ffffff14}.nav-link.active{color:#fff;background:#ffffff24}.btn-ghost-light{color:#cbd5e1;background:transparent}.btn-ghost-light:hover{color:#fff;background:#ffffff14}.bottom-nav{display:none;grid-template-columns:repeat(3,1fr);position:fixed;bottom:0;left:0;right:0;z-index:30;background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -4px 16px #0f172a14;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px 9px;font-family:inherit;font-size:11px;font-weight:600;color:var(--text-muted);background:none;border:none;cursor:pointer}.bottom-nav-item.active{color:var(--primary)}.bottom-nav-item:active{transform:scale(.96)}.page{max-width:960px;margin:0 auto;padding:16px}@media(max-width:639px){.main-nav,.app-header .logout-btn{display:none}.bottom-nav{display:grid}.page{padding-bottom:88px}.btn-small{min-height:44px;padding:9px 12px;font-size:13px}}.page-title{font-size:22px;margin:4px 0 16px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.page-head h2{font-size:20px}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px;background:radial-gradient(1200px 500px at 100% -10%,rgba(37,99,235,.18),transparent 60%),radial-gradient(900px 400px at -10% 110%,rgba(5,150,105,.14),transparent 55%),var(--bg)}.auth-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:28px;box-shadow:var(--shadow-lg)}.brand{text-align:center;margin-bottom:24px}.brand .brand-logo{width:48px;height:48px;font-size:20px;border-radius:14px;margin-bottom:12px}.brand h1{font-size:22px}.brand p{color:var(--text-muted);font-size:14px;margin-top:4px}.auth-form{display:flex;flex-direction:column;gap:16px}.auth-form label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--text-muted)}.auth-form input{padding:12px 14px;border:1px solid var(--border);border-radius:10px;font-size:15px;background:var(--surface-2)}.auth-form input:focus{outline:2px solid var(--primary-soft);border-color:var(--primary);background:#fff}.form-error{color:var(--danger);font-size:13px;min-height:18px}.auth-form .btn{width:100%;padding:12px;font-size:15px}.toolbar{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.toolbar-row{display:flex;gap:8px}.toolbar-row input,.toolbar-row select{padding:9px 12px;border:1px solid var(--border);border-radius:10px;font-size:14px;background:var(--surface);color:var(--text)}.toolbar-row input{flex:1;min-width:0}.toolbar-row select{width:auto}.segmented{display:inline-flex;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:3px;gap:3px;width:max-content;max-width:100%}.seg{border:none;background:transparent;cursor:pointer;padding:7px 14px;border-radius:8px;font-size:13.5px;font-weight:600;color:var(--text-muted)}.seg.active{background:var(--primary);color:#fff}.entry-list{display:flex;flex-direction:column;gap:10px}.entry-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px;cursor:pointer;transition:box-shadow .15s,border-color .15s}.entry-card:hover{border-color:var(--primary);box-shadow:0 2px 10px #2563eb1f}.entry-card:active{background:var(--surface-2)}.entry-card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.entry-card.is-hutang{border-left:4px solid var(--hutang)}.entry-card.is-piutang{border-left:4px solid var(--piutang)}.entry-top{display:flex;gap:6px;margin-bottom:6px}.entry-name{font-weight:700;font-size:15px}.entry-desc{color:var(--text-muted);font-size:13.5px;margin-top:2px}.entry-meta{color:var(--text-muted);font-size:12.5px;margin-top:4px}.entry-side{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.entry-amount{font-size:18px;font-weight:800}.amount-hutang{color:var(--hutang)}.amount-piutang{color:var(--piutang)}.entry-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:700}.badge-type.badge-hutang{background:var(--danger-soft);color:var(--danger)}.badge-type.badge-piutang,.badge-status.badge-lunas{background:var(--success-soft);color:var(--success)}.badge-status.badge-belum{background:var(--amber-soft);color:var(--amber)}.empty-state{text-align:center;color:var(--text-muted);font-size:14px;padding:40px 16px;background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius)}.summary-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--primary);border-radius:var(--radius);padding:10px 14px;margin-bottom:14px;font-size:13.5px;color:var(--text-muted);box-shadow:var(--shadow)}.summary-bar strong{color:var(--text);font-size:15px}.summary-hutang{color:var(--hutang);font-weight:600}.summary-piutang{color:var(--piutang);font-weight:600}.fab{display:none;position:fixed;right:20px;bottom:96px;width:58px;height:58px;border-radius:50%;background:var(--primary);color:#fff;border:none;cursor:pointer;box-shadow:0 8px 20px #2563eb59,0 2px 6px #0f172a33;z-index:40;align-items:center;justify-content:center;transition:transform .12s ease,background .15s}.fab:hover{background:var(--primary-hover)}.fab:active{transform:scale(.92)}@media(max-width:639px){.fab{display:flex}}.modal-overlay{position:fixed;inset:0;z-index:50;background:#0f172a80;display:flex;align-items:flex-end;justify-content:center;padding:0}.modal{width:100%;max-width:480px;background:var(--surface);border-radius:18px 18px 0 0;padding:20px;max-height:92vh;overflow-y:auto;animation:slide-up .2s ease}.modal-sm{max-width:400px;border-radius:18px}@keyframes slide-up{0%{transform:translateY(20px);opacity:.6}to{transform:none;opacity:1}}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.modal h3{font-size:17px}.modal form{display:flex;flex-direction:column;gap:12px}.modal form label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:var(--text-muted)}.modal form input,.modal form select{padding:10px 12px;border:1px solid var(--border);border-radius:10px;font-size:15px;background:var(--surface-2);color:var(--text)}.modal form input:focus,.modal form select:focus{outline:2px solid var(--primary-soft);border-color:var(--primary);background:#fff}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.modal-actions .btn{flex:1}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);border-top:3px solid transparent}.stat-piutang{border-top-color:var(--piutang)}.stat-hutang{border-top-color:var(--hutang)}.stat-neutral{border-top-color:var(--primary)}.stat-label{color:var(--text-muted);font-size:12.5px;font-weight:600}.stat-value{font-size:20px;font-weight:800;margin-top:4px;word-break:break-word}.dash-grid{display:grid;grid-template-columns:1fr;gap:12px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.panel h3{font-size:15px;margin-bottom:12px}.panel h4{font-size:13px;margin:10px 0 8px}.breakdown-group{margin-bottom:4px}.breakdown-sub.piutang{color:var(--piutang)}.breakdown-sub.hutang{color:var(--hutang)}.bar-row{margin-bottom:10px}.bar-top{display:flex;justify-content:space-between;font-size:13px;color:var(--text-muted);margin-bottom:4px}.bar-track{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden}.bar-fill{height:100%;border-radius:999px}.fill-piutang{background:var(--piutang)}.fill-hutang{background:var(--hutang)}.fill-neutral{background:#94a3b8}.person-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.person-row:last-child{border-bottom:none}.person-name{font-weight:700;font-size:14px}.person-sub{font-size:12px;color:var(--text-muted);margin-top:1px}.person-net{font-weight:800;font-size:14px;white-space:nowrap}.net-pos{color:var(--piutang)}.net-neg{color:var(--hutang)}.muted{color:var(--text-muted);font-size:13.5px}@media(min-width:640px){.modal-overlay{align-items:center;padding:24px}.modal{border-radius:18px}.entry-card{flex-direction:row;align-items:center;justify-content:space-between;gap:16px}.entry-side{flex-direction:row;align-items:center;gap:16px}.entry-actions{justify-content:flex-end}.stats-grid{grid-template-columns:repeat(4,1fr)}.dash-grid{grid-template-columns:1fr 1fr}}
