:root{--ink:#1c2b3a;--ink-2:#24384b;--paper:#f6f1e7;--card:#fffdf8;--line:#e3dac7;--line-soft:#ece4d4;--brass:#a8791f;--brass-dark:#7d5b17;--brass-soft:#f6ecd8;--rust:#a2402c;--rust-soft:#f7e9e4;--muted:#5b6b7c;--muted-soft:#93a0ac;--good:#3d7a54;--good-soft:#e7f3ea;--radius:14px;--radius-lg:20px;--radius-sm:9px;--shadow-xs:0 1px 2px #1c2b3a0f;--shadow-sm:0 6px 16px -10px #1c2b3a2e;--shadow-md:0 16px 32px -16px #1c2b3a38;--shadow-lg:0 28px 60px -24px #1c2b3a52;--ease:cubic-bezier(.4,0,.2,1)}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0;overflow:hidden}body{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;min-height:100vh;font-family:Inter,sans-serif}h1,h2,h3{font-family:Fraunces,serif}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum";font-family:IBM Plex Mono,monospace}.mono{font-family:IBM Plex Mono,monospace}a{color:inherit}button{cursor:pointer;font-family:inherit}::selection{background:var(--brass);color:#fff}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{border:2px solid var(--paper);background:#dccfb0;border-radius:20px}::-webkit-scrollbar-thumb:hover{background:#cbba90}#loginView{background:radial-gradient(560px 420px at 10% 6%, #a8791f1a, transparent 60%), radial-gradient(620px 460px at 92% 94%, #3d7a5414, transparent 60%), repeating-linear-gradient(180deg, transparent, transparent 27px, var(--line) 28px), var(--paper);justify-content:center;align-items:center;height:100vh;padding:24px;display:flex;position:relative;overflow-y:auto}#loginView[hidden],#appView[hidden]{display:none!important}.login-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);width:100%;max-width:388px;box-shadow:var(--shadow-lg);z-index:1;animation:cardIn .45s var(--ease);padding:44px 38px;position:relative}@keyframes cardIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.login-brand{align-items:center;gap:10px;margin-bottom:8px;display:flex}.login-brand .mark{width:36px;height:36px;box-shadow:var(--shadow-xs);border-radius:9px;justify-content:center;align-items:center;display:flex;overflow:hidden}.mark img{object-fit:cover;width:100%;height:100%;display:block}.login-brand span{letter-spacing:-.005em;font-family:Fraunces,serif;font-size:21px;font-weight:600}.login-card p.sub{color:var(--muted);margin:0 0 28px;font-size:13.5px;line-height:1.5}.field{margin-bottom:17px}.field label{letter-spacing:.02em;color:var(--ink-2);margin-bottom:6px;font-size:12.5px;font-weight:600;display:block}.field input,.field select{border:1.5px solid var(--line);border-radius:var(--radius-sm);width:100%;color:var(--ink);transition:border-color .15s var(--ease), box-shadow .15s var(--ease);background:#fff;padding:11.5px 13px;font-family:inherit;font-size:14.5px}.field input:hover,.field select:hover{border-color:#cbbb96}.field input:focus,.field select:focus,button:focus-visible{border-color:var(--brass);outline:none;box-shadow:0 0 0 4px #a8791f24}a:focus-visible,button:focus-visible{outline:2px solid var(--brass);outline-offset:2px}.btn{border-radius:var(--radius-sm);transition:transform .12s var(--ease), background .15s var(--ease), box-shadow .2s var(--ease), border-color .15s var(--ease), color .15s var(--ease);letter-spacing:.005em;border:none;justify-content:center;align-items:center;gap:8px;padding:11.5px 19px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:linear-gradient(90deg, var(--ink), var(--ink-2));color:#fff;width:100%;box-shadow:0 10px 22px -10px #1c2b3a80}.btn-primary:hover{background:linear-gradient(90deg, var(--ink-2), var(--ink));transform:translateY(-1px);box-shadow:0 14px 26px -10px #1c2b3a8c}.btn-primary:active{transform:translateY(0)scale(.98)}.btn-ghost{color:var(--ink-2);border:1.5px solid var(--line);background:#fff}.btn-ghost:hover{border-color:var(--brass);color:var(--brass-dark);background:var(--brass-soft)}.btn-danger{color:var(--rust);background:0 0;border:1.5px solid #e3c6bb}.btn-danger:hover{background:var(--rust-soft);border-color:var(--rust)}.btn-danger-solid{background:linear-gradient(90deg, var(--rust), #7f3120);color:#fff;box-shadow:0 10px 22px -10px #a2402c80}.btn-danger-solid:hover{background:linear-gradient(90deg, #7f3120, var(--rust));transform:translateY(-1px);box-shadow:0 14px 26px -10px #a2402c8c}.btn-danger-solid:active{transform:translateY(0)scale(.98)}.confirm-body{text-align:center;padding-top:32px}.confirm-icon{background:var(--rust-soft);width:56px;height:56px;color:var(--rust);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 18px;font-size:21px;display:flex}.confirm-body h3{margin:0 0 8px}.confirm-message{color:var(--muted);margin:0;font-size:14px;line-height:1.55}.confirm-foot{justify-content:center;margin-top:26px}.confirm-foot .btn{flex:1}.btn-sm{padding:8px 13px;font-size:12.5px}.login-error{background:var(--rust-soft);color:var(--rust);border-radius:var(--radius-sm);border:1px solid #e3c6bb;align-items:center;gap:8px;margin-bottom:18px;padding:11px 13px;font-size:13px;display:none}#appView{grid-template-columns:242px 1fr;height:100vh;display:grid}.sidebar{background:var(--ink);color:#dfe6ec;background-image:linear-gradient(180deg, var(--ink-2) 0%, var(--ink) 55%);flex-direction:column;height:100%;padding:24px 14px;display:flex;overflow-y:hidden}.brand{border-bottom:1px solid #ffffff14;align-items:center;gap:10px;margin-bottom:14px;padding:0 10px 22px;display:flex}.brand .mark{border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;display:flex;overflow:hidden;box-shadow:0 6px 14px -6px #0006}.brand span{color:#fff;letter-spacing:-.005em;font-family:Fraunces,serif;font-size:18px;font-weight:600}.nav-label{letter-spacing:.12em;text-transform:uppercase;color:#6b7c8c;padding:6px 12px 10px;font-size:10.5px;font-weight:700}nav.navlist{flex-direction:column;flex:1;gap:2px;display:flex}.navlink{color:#b7c2cd;text-align:left;width:100%;transition:background .15s var(--ease), color .15s var(--ease);cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:center;gap:11px;padding:10.5px 12px;font-size:13.5px;font-weight:500;text-decoration:none;display:flex}.navlink i{text-align:center;color:#8494a3;width:16px;transition:color .15s var(--ease);font-size:13.5px}.navlink:hover{color:#fff;background:#ffffff0f}.navlink:hover i{color:#e6d4ac}.navlink.active{color:#fff;background:#a8791f38;box-shadow:inset 0 0 0 1px #a8791f4d}.navlink.active i{color:var(--brass)}.sidebar-foot{border-top:1px solid #ffffff14;margin-top:8px;padding-top:14px}.userchip{transition:background .15s var(--ease);border-radius:10px;align-items:center;gap:10px;padding:9px 8px;display:flex}.userchip:hover{background:#ffffff0d}.userchip .avatar{background:linear-gradient(135deg, var(--brass), var(--brass-dark));color:#fff;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:700;display:flex;box-shadow:0 4px 10px -3px #a8791f80}.userchip .who{flex:1;min-width:0}.userchip .who .name{color:#fff;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.userchip .who .id{color:#8494a3;font-size:11px}.userchip button{color:#8494a3;transition:color .15s var(--ease), background .15s var(--ease);background:0 0;border:none;border-radius:7px;padding:6px;font-size:14px}.userchip button:hover{color:var(--rust);background:#a2402c24}main.content{-webkit-overflow-scrolling:touch;max-width:1200px;height:100vh;padding:32px 38px 64px;overflow-y:auto}.view{display:none}.view.active{animation:viewIn .3s var(--ease);display:block}@keyframes viewIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.view-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:26px;display:flex}.view-head h1{letter-spacing:-.01em;margin:0 0 4px;font-size:27px;font-weight:600}.eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--brass-dark);margin:0 0 7px;font-size:11px;font-weight:700}.view-head .desc{color:var(--muted);margin:0;font-size:13.5px}.balance-card{background:linear-gradient(135deg, var(--ink-2) 0%, var(--ink) 70%);color:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);margin-bottom:24px;padding:30px 32px;position:relative;overflow:hidden}.balance-card:before{content:"";pointer-events:none;background:repeating-linear-gradient(#0000,#0000 25px,#ffffff09 26px);position:absolute;inset:0}.balance-card:after{content:"";pointer-events:none;background:radial-gradient(circle,#a8791f59,#0000 70%);border-radius:50%;width:280px;height:280px;position:absolute;top:-120px;right:-80px}.balance-card .tab{letter-spacing:.12em;text-transform:uppercase;color:var(--brass);border:1px dashed #a8791f99;border-radius:20px;margin-bottom:16px;padding:4px 11px;font-size:11px;display:inline-block;position:relative}.balance-card .amount{letter-spacing:-.01em;margin:0 0 20px;font-size:44px;font-weight:600;line-height:1;position:relative}.balance-row{flex-wrap:wrap;gap:14px;display:flex;position:relative}.balance-row .item{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff0f;border:1px solid #ffffff17;border-radius:12px;flex:1;min-width:180px;padding:12px 18px}.balance-row .item .lbl{color:#a7b4c0;align-items:center;gap:6px;margin-bottom:5px;font-size:12px;display:flex}.balance-row .item .lbl i{border-radius:5px;justify-content:center;align-items:center;width:16px;height:16px;font-size:10px;display:inline-flex}.balance-row .item .val{letter-spacing:-.005em;font-size:20px;font-weight:600}.balance-row .item .val.income{color:#8fcf9f}.balance-row .item .val.expense{color:#e8a58f}.balance-row .item:has(.income) .lbl i{color:#8fcf9f;background:#8fcf9f2e}.balance-row .item:has(.expense) .lbl i{color:#e8a58f;background:#e8a58f2e}.grid-2{grid-template-columns:1.3fr 1fr;align-items:start;gap:20px;display:grid}@media (width<=900px){.grid-2{grid-template-columns:1fr}}#view-dashboard #dashRecent{max-height:360px;margin-right:-6px;padding-right:6px;overflow-y:auto}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);transition:box-shadow .25s var(--ease), transform .25s var(--ease), border-color .25s var(--ease);box-shadow:var(--shadow-xs);padding:20px 22px}.card:hover{box-shadow:var(--shadow-md);border-color:var(--line-soft)}.card h3{letter-spacing:-.005em;justify-content:space-between;align-items:center;margin:0 0 16px;font-family:Fraunces,serif;font-size:15px;font-weight:600;display:flex}.card h3 a,.card h3 button.link{color:var(--brass-dark);transition:background .15s var(--ease);background:0 0;border:none;border-radius:6px;padding:4px 6px;font-family:Inter,sans-serif;font-size:12px;font-weight:600}.card h3 a:hover,.card h3 button.link:hover{background:var(--brass-soft)}.tx-row{border-bottom:1px solid var(--line-soft);transition:background .15s var(--ease);align-items:center;gap:12px;padding:11px 0;display:flex}.tx-row:last-child{border-bottom:none}.tx-icon{width:36px;height:36px;box-shadow:var(--shadow-xs);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;display:flex}.tx-info{flex:1;min-width:0}.tx-info .d{text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:600;overflow:hidden}.tx-info .m{color:var(--muted);margin-top:1px;font-size:11.5px}.tx-amt{white-space:nowrap;font-size:13.5px;font-weight:700}.tx-amt.income{color:var(--good)}.tx-amt.expense{color:var(--rust)}.empty{text-align:center;color:var(--muted);padding:34px 10px;font-size:13px}.empty i{color:var(--line);margin-bottom:10px;font-size:24px;display:block}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;display:flex}.toolbar input[type=search],.toolbar select{border:1.5px solid var(--line);border-radius:var(--radius-sm);transition:border-color .15s var(--ease), box-shadow .15s var(--ease);background:#fff;padding:10px 12px;font-size:13px}.toolbar input[type=search]:focus,.toolbar select:focus{border-color:var(--brass);outline:none;box-shadow:0 0 0 4px #a8791f1f}.toolbar input[type=search]{flex:1;min-width:180px}.spacer{flex:1}table{border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);width:100%;box-shadow:var(--shadow-xs);overflow:hidden}thead th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:1px solid var(--line);background:var(--brass-soft);padding:13px 15px;font-size:11px;font-weight:700}tbody td{border-bottom:1px solid var(--line-soft);vertical-align:middle;padding:13px 15px;font-size:13.5px}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background .15s var(--ease)}tbody tr:hover{background:#faf6ec}.badge{border-radius:20px;align-items:center;gap:5px;padding:4px 10px;font-size:11.5px;font-weight:700;display:inline-flex}.badge.income{background:var(--good-soft);color:var(--good)}.badge.expense{background:var(--rust-soft);color:var(--rust)}.badge.transfer{color:var(--muted);background:#eef1ea}.row-actions{justify-content:flex-end;gap:6px;display:flex}.icon-btn{border:1.5px solid var(--line);width:30px;height:30px;color:var(--muted);transition:all .15s var(--ease);background:0 0;border-radius:8px}.icon-btn:hover{border-color:var(--rust);color:var(--rust);background:var(--rust-soft)}.pagination{color:var(--muted);justify-content:space-between;align-items:center;margin-top:16px;font-size:12.5px;display:flex}.pagination .btns{gap:6px;display:flex}.cards-grid{grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:16px;display:grid}.wallet-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);transition:box-shadow .25s var(--ease), transform .25s var(--ease), border-color .2s var(--ease);box-shadow:var(--shadow-xs);padding:19px}.wallet-card:hover{box-shadow:var(--shadow-md);border-color:var(--line-soft);transform:translateY(-3px)}.wallet-card .top{align-items:center;gap:11px;margin-bottom:15px;display:flex}.wallet-card .ic{color:#fff;width:38px;height:38px;box-shadow:var(--shadow-xs);border-radius:10px;justify-content:center;align-items:center;display:flex}.wallet-card .name{letter-spacing:-.005em;font-size:14px;font-weight:600}.wallet-card .type{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:11px}.wallet-card .bal{letter-spacing:-.01em;font-family:IBM Plex Mono,monospace;font-size:23px;font-weight:600}.cat-chip{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);transition:box-shadow .2s var(--ease), border-color .2s var(--ease);box-shadow:var(--shadow-xs);align-items:center;gap:10px;padding:13px 15px;display:flex}.cat-chip:hover{box-shadow:var(--shadow-sm);border-color:var(--line-soft)}.cat-chip .ic{color:#fff;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:12px;display:flex}.cat-chip .info{flex:1;min-width:0}.cat-chip .info .n{font-size:13px;font-weight:600}.cat-chip .info .t{color:var(--muted);text-transform:uppercase;font-size:10.5px}.budget-item{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);transition:box-shadow .2s var(--ease);box-shadow:var(--shadow-xs);margin-bottom:10px;padding:15px 17px}.budget-item:hover{box-shadow:var(--shadow-sm)}.budget-item .head{justify-content:space-between;align-items:center;margin-bottom:9px;display:flex}.budget-item .head .n{font-size:13.5px;font-weight:600}.budget-item .head .amt{color:var(--muted);font-size:12.5px}.budget-item .head .tag{color:var(--brass-dark);background:var(--brass-soft);vertical-align:middle;border-radius:999px;margin-left:7px;padding:2px 8px;font-size:10.5px;font-weight:600;display:inline-block}.bar-track{background:#eee6d5;border-radius:6px;height:8px;overflow:hidden}.bar-fill{background:var(--good);height:100%;transition:width .4s var(--ease);border-radius:6px}.bar-fill.warn{background:var(--brass)}.bar-fill.over{background:var(--rust)}.trend-chart{border-bottom:1px solid var(--line);align-items:flex-end;gap:14px;height:200px;padding:10px 6px 0;display:flex}.trend-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:3px;height:100%;display:flex}.trend-bars{justify-content:center;align-items:flex-end;gap:3px;width:100%;height:100%;display:flex}.trend-bar{width:12px;transition:opacity .15s var(--ease);border-radius:4px 4px 0 0}.trend-bar:hover{opacity:.8}.trend-bar.income{background:var(--good)}.trend-bar.expense{background:var(--rust)}.trend-label{color:var(--muted);margin-top:8px;font-size:10.5px}.legend{color:var(--muted);gap:16px;margin-top:14px;font-size:12px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend .dot{border-radius:2px;width:9px;height:9px}.breakdown-row{margin-bottom:13px}.breakdown-row .lbl{justify-content:space-between;margin-bottom:5px;font-size:12.5px;display:flex}.breakdown-row .lbl .n{font-weight:600}dialog{border-radius:var(--radius-lg);width:100%;max-width:428px;box-shadow:var(--shadow-lg);border:none;padding:0}dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1c2b3a80}.modal-body{padding:26px 28px}.modal-body h3{letter-spacing:-.005em;margin:0 0 20px;font-size:17.5px;font-weight:600}.modal-foot{justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.fab{background:linear-gradient(135deg, var(--ink-2), var(--ink));width:52px;height:52px;color:var(--brass);transition:transform .18s var(--ease), box-shadow .18s var(--ease);border:none;border-radius:50%;font-size:19px;position:fixed;bottom:30px;right:38px;box-shadow:0 14px 30px -10px #1c2b3a8c}.fab:hover{transform:translateY(-2px)scale(1.03);box-shadow:0 18px 36px -10px #1c2b3a99}.fab:active{transform:translateY(0)scale(.97)}#toast{z-index:9999;flex-direction:column;gap:8px;display:flex;position:fixed;top:20px;right:20px}.toast-item{background:var(--ink);color:#fff;box-shadow:var(--shadow-lg);min-width:230px;animation:slidein .2s var(--ease);border-radius:10px;align-items:center;gap:9px;padding:13px 17px;font-size:13px;display:flex}.toast-item.error{background:var(--rust)}.toast-item.success{background:var(--good)}@keyframes slidein{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.settings-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.mobile-topbar,.sidebar-backdrop{display:none}@media (width<=900px){.settings-grid,.field-row{grid-template-columns:1fr}#appView{flex-direction:column;grid-template-columns:1fr;height:100vh;display:flex}.mobile-topbar{z-index:45;background:var(--ink);color:#fff;padding:14px 16px;padding-top:calc(14px + env(safe-area-inset-top));box-shadow:var(--shadow-sm);flex:none;align-items:center;gap:8px;display:flex}.mobile-topbar .brand{border:none;flex:1;margin:0;padding:0}.mobile-topbar .brand span{color:#fff;font-size:16px}#menuToggle{color:#fff;background:0 0;border:none;border-radius:8px;padding:8px;font-size:19px;line-height:1}#menuToggle:hover{background:#ffffff14}.sidebar{z-index:60;width:260px;max-width:82vw;height:100vh;transition:transform .25s var(--ease);padding-top:calc(22px + env(safe-area-inset-top));padding-bottom:calc(22px + env(safe-area-inset-bottom));position:fixed;top:0;left:0;transform:translate(-100%);box-shadow:0 0 40px #0000004d}.sidebar.open{transform:translate(0)}.sidebar-backdrop{z-index:55;opacity:0;pointer-events:none;transition:opacity .2s var(--ease);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#1c2b3a80;position:fixed;inset:0}.sidebar-backdrop.show{opacity:1;pointer-events:auto;display:block}main.content{padding:18px 16px calc(90px + env(safe-area-inset-bottom));flex:auto;height:auto}.view-head{flex-direction:column;align-items:stretch}.view-head h1{font-size:22px}.balance-card{padding:24px 20px}.balance-card .amount{font-size:33px}.balance-row{gap:10px}.balance-row .item{min-width:auto;padding:11px 14px}.cards-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}table{box-shadow:none;background:0 0;border:none;display:block}thead{display:none}tbody{display:block}tbody tr{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-xs);flex-wrap:wrap;align-items:center;column-gap:10px;margin-bottom:9px;padding:13px 15px;display:flex}tbody tr td{border:none;padding:0;font-size:13px}tbody td:first-child{color:var(--muted);flex:0 0 100%;order:3;margin-top:4px;font-size:11.5px}tbody td:nth-child(2){text-overflow:ellipsis;white-space:nowrap;flex:auto;order:1;min-width:0;font-weight:600;overflow:hidden}tbody td:nth-child(3){flex:0 0 100%;order:4;margin-top:6px}tbody td:nth-child(4){display:none}tbody td:nth-child(5){flex:none;order:2;text-align:right!important}tbody td:nth-child(6){flex:0 0 100%;order:5;justify-content:flex-end;margin-top:6px;display:flex}.btn{padding:12.5px 18px}.navlink{padding:13.5px 12px;font-size:14.5px}.icon-btn{width:36px;height:36px}.fab{bottom:calc(22px + env(safe-area-inset-bottom));width:54px;height:54px;right:20px}dialog{border-radius:var(--radius);width:94vw;max-width:94vw;max-height:88vh;margin:auto}.modal-body{max-height:88vh;padding:22px 20px;overflow-y:auto}}@media (width<=480px){.cards-grid{grid-template-columns:1fr}.login-card{padding:32px 24px}}.field input:disabled,.field input[readonly]{background-color:var(--line-soft);color:var(--muted);cursor:not-allowed;border-color:var(--line)}.profile-view-row{justify-content:space-between;align-items:center;gap:12px;display:flex}
