:root{--bg:#f5f3ee;--surface:#fff;--surface-soft:#faf8f3;--line:#e9e4db;--text:#181713;--muted:#6e675d;--primary:#25231f;--warm:#c88b59;--sage:#8fa081;--stone:#b7aa97;--danger:#b2553d;--shadow:0 18px 42px #1a140b0f;--radius-xl:28px;--radius-lg:20px;--radius-md:16px;--radius-sm:12px;--loading-overlay-bg:#18171338;--loading-overlay-blur:6px;--loading-card-bg:#fffffff2;--loading-spinner-color:var(--primary);--loading-spinner-track:#6e675d33;--loading-spinner-duration:.8s;--loading-skeleton-base:#ebe6dd;--loading-skeleton-highlight:#f8f5ef;--loading-skeleton-duration:1.4s;--loading-transition:.18s ease;--loading-z-index:50}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--text);background:radial-gradient(circle at 0 0,#c88b5914,#0000 28%),linear-gradient(#f7f4ee 0%,#f2eee7 100%);margin:0;font-family:Segoe UI Variable Text,Aptos,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.loading-overlay{z-index:var(--loading-z-index);background:var(--loading-overlay-bg);-webkit-backdrop-filter:blur(var(--loading-overlay-blur));backdrop-filter:blur(var(--loading-overlay-blur));animation:loading-fade-in var(--loading-transition);place-items:center;padding:20px;display:grid;position:fixed;inset:0}.loading-card{border-radius:var(--radius-lg);background:var(--loading-card-bg);text-align:center;width:min(100%,320px);animation:loading-card-in var(--loading-transition);border:1px solid #fffc;outline:none;justify-items:center;gap:16px;padding:28px;display:grid;box-shadow:0 24px 64px #1817132e}.loading-spinner{border:2px solid var(--loading-spinner-track);border-top-color:var(--loading-spinner-color);animation:loading-spin var(--loading-spinner-duration) linear infinite;border-radius:50%;flex:none;display:inline-block}.loading-spinner-sm{width:16px;height:16px}.loading-spinner-md{border-width:3px;width:26px;height:26px}.loading-spinner-lg{border-width:4px;width:42px;height:42px}.loading-spinner-neutral{--loading-spinner-color:currentColor;--loading-spinner-track:#ffffff59}.loading-button-content,.loading-state{justify-content:center;align-items:center;gap:9px;display:inline-flex}.loading-state{width:100%;min-height:96px;color:var(--muted)}.loading-skeleton{background:linear-gradient(90deg, var(--loading-skeleton-base) 25%, var(--loading-skeleton-highlight) 50%, var(--loading-skeleton-base) 75%);width:100%;min-height:16px;animation:loading-shimmer var(--loading-skeleton-duration) ease-in-out infinite;background-size:200% 100%;border-radius:10px;display:block}.loading-skeleton-text{height:16px;margin-block:7px}.loading-skeleton-block{min-height:88px}.loading-skeleton-circle{aspect-ratio:1;border-radius:50%}.page-skeleton{gap:18px;display:grid}.skeleton-list{gap:12px;display:grid}.skeleton-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:18px;min-height:62px;padding:12px 0;display:flex}.skeleton-row>div{flex:1}.state-card{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-soft);justify-items:start;gap:12px;padding:18px;display:grid}.state-card p,.empty-state p{margin:0}.state-card-error{color:var(--danger);background:#fff7f4;border-color:#b2553d40}.section-refresh{position:relative}.section-refresh:after{content:"Memperbarui...";border-radius:inherit;color:var(--muted);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#ffffffb8;place-items:center;font-weight:700;display:grid;position:absolute;inset:0}@keyframes loading-spin{to{transform:rotate(360deg)}}@keyframes loading-shimmer{to{background-position:-200% 0}}@keyframes loading-fade-in{0%{opacity:0}}@keyframes loading-card-in{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.loading-spinner,.loading-skeleton,.loading-card,.loading-overlay{transition:none;animation:none}}.page{min-height:100vh}.pin-shell{z-index:40;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#1817133d;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.pin-card{width:min(100%,420px);box-shadow:var(--shadow);background:#ffffffeb;border:1px solid #ffffffb3;border-radius:32px;padding:32px}.pin-card h1,.brand-card h2,.topbar h1,.banner h3,.block-head h3{letter-spacing:-.03em;margin:0;font-family:Georgia,Times New Roman,serif}.pin-card h1{margin-bottom:12px;font-size:2.6rem}.pin-form{gap:10px;margin-top:22px;display:grid}.pin-form label,.form-grid label{color:var(--muted);gap:8px;font-size:.95rem;display:grid}.pin-form input,.pin-form button,.button,.menu-card a,.form-grid input,.form-grid select,.form-grid textarea,.pill{border-radius:14px}.pin-form input,.form-grid input,.form-grid select,.form-grid textarea{border:1px solid var(--line);width:100%;color:var(--text);background:#fff;padding:14px 15px}.pin-form button,.button{background:var(--primary);color:#fff;border:0;padding:13px 18px}.hint,.error,.muted,.meta,.surface-card p,.history-row p,.budget-note p,.panel-card p,.soft-alert p,.footnote{color:var(--muted)}.error{min-height:1.2em;color:var(--danger)}.app-frame{opacity:.3;grid-template-columns:300px minmax(0,1fr);gap:24px;padding:24px;transition:opacity .18s;display:grid}.app-frame.is-ready{opacity:1}.sidebar{align-content:start;gap:16px;display:grid}.brand-card,.menu-card,.panel-card,.surface-card,.banner{border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow);background:#ffffffb8}.brand-card,.panel-card,.surface-card,.banner{padding:22px}.section-tag{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;margin-bottom:10px;font-size:.76rem;font-weight:700;display:inline-block}.brand-card h2{font-size:1.8rem;line-height:1.1}.menu-card{padding:8px;display:grid}.menu-card a{padding:12px 14px}.menu-card a:hover{background:var(--surface-soft)}.panel-head,.block-head,.topbar,.banner,.stack-row,.category-row,.history-row,.budget-item,.action-row,.topbar-actions,.chat-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.stack-list,.category-list,.history-list,.budget-list{gap:12px;display:grid}.stack-row{border-top:1px solid var(--line);padding-top:12px}.stack-row:first-child{border-top:0;padding-top:0}.soft-alert{background:#fffaf5}.soft-alert h3{margin:0 0 8px}.content{gap:18px;display:grid}.topbar{align-items:end}.topbar h1{max-width:720px;font-size:clamp(2rem,4vw,3.8rem);line-height:.98}.button-secondary{color:var(--text);border:1px solid var(--line);background:#fff}.banner{background:linear-gradient(#ffffffe6,#faf8f3e6)}.banner h3{font-size:1.5rem}.banner strong{font-size:1.2rem}.card-grid{gap:18px;display:grid}.summary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.main-grid{grid-template-columns:minmax(0,1.35fr) minmax(300px,.9fr)}.compact-card strong{margin:10px 0 6px;font-size:1.8rem;display:block}.block-head h3{font-size:1.5rem}.mini-chart{grid-template-columns:repeat(7,1fr);align-items:end;gap:12px;height:220px;margin-top:24px;display:grid}.bar-col{justify-items:center;gap:10px;display:grid}.bar-col span{background:linear-gradient(#d6c7b6 0%,#b88e6a 100%);border-radius:999px;width:100%;max-width:44px}.bar-col:nth-child(6) span{background:linear-gradient(#b8c5ae 0%,#7d9070 100%)}.bar-col small{color:var(--muted)}.category-list{margin-top:18px}.category-label{align-items:center;gap:10px;display:flex}.category-value{justify-items:end;gap:4px;display:grid}.swatch{border-radius:999px;width:12px;height:12px}.tone-warm{background:var(--warm)}.tone-sage{background:var(--sage)}.tone-ink{background:#515a63}.tone-stone{background:var(--stone)}.tone-soft{background:#d9d4cb}.toggle-row{flex-wrap:wrap;gap:10px;margin:18px 0;display:flex}.pill{border:1px solid var(--line);color:var(--muted);background:#fff;padding:10px 14px}.pill.active{background:var(--primary);color:#fff}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.single-column-grid{grid-template-columns:1fr}.full-span{grid-column:1/-1}.budget-preview{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px;display:grid}.budget-preview>div,.budget-note,.investment-note{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-soft);padding:14px}.budget-preview strong,.budget-note strong,.investment-note strong{margin-top:8px;display:block}.warn{color:var(--danger)}.action-row,.history-list,.budget-list{margin-top:18px}.history-row,.budget-item{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-soft);padding:14px}.history-row strong,.budget-item strong{margin-bottom:6px;display:block}.minus{color:var(--danger)}.plus{color:#5b7850}.progress{background:#ece6dc;border-radius:999px;flex:1;min-width:120px;height:10px;overflow:hidden}.progress span{border-radius:inherit;background:linear-gradient(90deg, var(--warm), #ad6f3d);height:100%;display:block}.budget-item em{color:var(--muted);font-style:normal}.chat-box{border:1px solid var(--line);background:linear-gradient(#fcfbf8 0%,#f6f2ea 100%);border-radius:24px;gap:12px;margin-top:18px;padding:16px;display:grid}.bubble{border-radius:16px;max-width:85%;padding:12px 14px;line-height:1.5}.bubble.bot{border:1px solid var(--line);background:#fff}.bubble.user{background:var(--primary);color:#fff;margin-left:auto}.chat-chip{background:var(--primary);color:#fff;border-radius:999px;padding:9px 12px;font-size:.9rem;display:inline-flex}.muted-chip{color:var(--muted);border:1px solid var(--line);background:#fff}.toast{z-index:30;border:1px solid var(--line);max-width:340px;box-shadow:var(--shadow);color:var(--muted);background:#ffffffeb;border-radius:18px;padding:16px 18px;position:fixed;bottom:24px;right:24px}@media (max-width:1180px){.app-frame,.summary-grid,.main-grid{grid-template-columns:1fr}}@media (max-width:720px){.app-frame{padding:16px}.topbar,.banner,.action-row,.topbar-actions,.history-row,.budget-item{flex-direction:column;align-items:flex-start}.form-grid,.budget-preview{grid-template-columns:1fr}.toast{max-width:none;left:16px;right:16px}}.menu-card a.active{background:var(--surface-soft)}.menu-card .nav-logout{border:0;border-top:1px solid var(--line);color:var(--danger);text-align:left;background:0 0;padding:12px 14px}.login-page{place-items:center;min-height:100vh;padding:20px;display:grid}.login-page .pin-card{width:min(100%,400px)}.login-page .pin-card h1{font-size:2rem}.login-page .pin-form input{letter-spacing:.18em;text-align:center;font-size:1.5rem}.cashflow-panel{min-width:0}.cashflow-controls{flex-wrap:wrap;align-items:center;gap:12px;margin-top:18px;display:flex}.cashflow-controls>strong{text-align:center;min-width:200px}.cashflow-controls .segmented{margin-left:auto}.cashflow-chart{width:100%;height:300px;margin-top:16px}.segmented{border:1px solid var(--line);background:var(--surface-soft);border-radius:8px;flex-wrap:wrap;gap:3px;padding:3px;display:inline-flex}.segmented button{min-height:34px;color:var(--muted);background:0 0;border:0;border-radius:6px;padding:6px 10px}.segmented button.active{background:var(--primary);color:#fff}.spendable-details summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;list-style:none;display:flex}.spendable-details summary::-webkit-details-marker{display:none}.spendable-details[open] .stack-list{margin-top:18px}.limit-edit{grid-template-columns:minmax(80px,1fr) minmax(140px,190px) auto;align-items:center;gap:8px;display:grid}.limit-edit input{border:1px solid var(--line);border-radius:8px;width:100%;min-width:0;padding:9px 10px}.limit-edit button,.text-button{color:#315a68;background:0 0;border:0;text-decoration:underline}.check-row{grid-template-columns:auto 1fr;align-items:center;display:flex!important}.check-row input{width:18px;height:18px}.reimbursement-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:520px;display:grid}.reimbursement-fields label{color:var(--muted);gap:6px;font-size:.9rem;display:grid}.reimbursement-fields input,.reimbursement-fields select{border:1px solid var(--line);border-radius:8px;width:100%;min-width:0;padding:9px 10px}@media (max-width:720px){.cashflow-controls{justify-content:center}.cashflow-controls .segmented{margin-left:0}.cashflow-chart{height:250px}.limit-edit{grid-template-columns:1fr auto;width:100%}.limit-edit .progress{grid-column:1/-1;width:100%}.reimbursement-fields{grid-template-columns:1fr}}.history-actions{justify-items:end;gap:10px;display:grid}.mini-actions{gap:8px;display:flex}.mini-actions button{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:12px;padding:8px 10px}@media (max-width:720px){.history-actions{justify-items:start}}.form-grid-form{gap:18px;display:grid}.filter-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px;display:grid}.compact-actions{justify-content:flex-end}.pager-row{justify-content:space-between;align-items:center;gap:12px;margin-top:18px;display:flex}.icon-button{border:1px solid var(--line);width:42px;height:42px;color:var(--text);background:#fff;border-radius:999px}.icon-button:disabled{opacity:.45;cursor:not-allowed}.date-input-shell{border:1px solid var(--line);background:#fff;border-radius:14px;align-items:center;gap:12px;padding:0 14px;display:flex}.date-input-shell span{color:var(--muted);font-size:.95rem}.date-input-shell input{background:0 0;border:0;padding:14px 0 14px 8px}.empty-state{border:1px dashed var(--line);border-radius:var(--radius-md);color:var(--muted);background:var(--surface-soft);padding:18px}.debt-card{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-soft);gap:14px;padding:14px;display:grid}.debt-payment-box{border-top:1px solid var(--line);gap:14px;padding-top:14px;display:grid}.payment-history-list{gap:10px;display:grid}.payment-history-row{border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px 14px}.payment-history-row strong{margin-bottom:4px;display:block}.budget-entry-list{gap:12px;display:grid}.budget-entry-row{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-soft);grid-template-columns:minmax(0,1fr) minmax(180px,220px);align-items:end;gap:14px;padding:14px;display:grid}.budget-entry-row strong{margin-bottom:6px;display:block}.investment-note{gap:4px;display:grid}.surface-card p.plus,.investment-note p.plus,.surface-card strong.plus{color:#5b7850}.surface-card p.warn,.investment-note p.warn,.surface-card strong.warn{color:var(--danger)}@media (max-width:720px){.budget-entry-row{grid-template-columns:1fr}}
