:root{--bg: #f6f1ea;--bg-soft: #fbf8f3;--panel: #fffdfa;--panel-2: #fbf6ef;--ink: #2c2823;--ink-soft: #6c6258;--muted: #9b9085;--line: #ece2d5;--line-strong: #ddd0bf;--brand: #1f9d76;--brand-strong: #18815f;--brand-2: #36c596;--accent: #e8924a;--pos: #1f9d76;--neg: #d56a52;--pos-bg: #e6f4ee;--neg-bg: #fbe9e3;--zero-bg: #f0eadf;--warn-bg: #fbeede;--r-xs: 8px;--r-sm: 10px;--r: 14px;--r-lg: 18px;--r-xl: 24px;--shadow-sm: 0 1px 2px rgba(72,55,38,.06), 0 1px 1px rgba(72,55,38,.04);--shadow: 0 6px 18px rgba(72,55,38,.08), 0 2px 6px rgba(72,55,38,.05);--shadow-lg: 0 18px 44px rgba(72,55,38,.16);--ring: 0 0 0 3px rgba(31,157,118,.28);--sidebar: #21413a;--sidebar-ink: #d8e6df;--sidebar-ink-dim: #93b0a6;--fast: .14s cubic-bezier(.4,0,.2,1);--med: .22s cubic-bezier(.4,0,.2,1)}@media (prefers-color-scheme: dark){:root{--bg: #1b1815;--bg-soft: #211d19;--panel: #262220;--panel-2: #2d2825;--ink: #f0e9df;--ink-soft: #c3b8aa;--muted: #978c7e;--line: #38322c;--line-strong: #473f37;--brand: #2bb487;--brand-strong: #38c596;--brand-2: #45d3a4;--pos: #2bb487;--neg: #e07a62;--pos-bg: #163029;--neg-bg: #36211c;--zero-bg: #2c2723;--warn-bg: #33271a;--shadow-sm: 0 1px 2px rgba(0,0,0,.3);--shadow: 0 8px 22px rgba(0,0,0,.36);--shadow-lg: 0 20px 50px rgba(0,0,0,.5);--ring: 0 0 0 3px rgba(43,180,135,.35);--sidebar: #14302a;--sidebar-ink: #cfe2db;--sidebar-ink-dim: #7fa093}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:Segoe UI Variable Text,Segoe UI,system-ui,-apple-system,SF Pro Rounded,Nunito,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.5;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-family:Segoe UI Variable Display,Segoe UI,ui-rounded,system-ui,sans-serif;margin:0;letter-spacing:-.012em}h1{font-size:23px;font-weight:750}h2{font-size:19px;font-weight:700}h3{font-size:15.5px;font-weight:700}button{font:inherit;cursor:pointer;color:inherit}input,select,textarea{font:inherit;color:inherit}:focus{outline:none}:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--r-xs)}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.muted{color:var(--muted)}.small{font-size:12.5px}.center{text-align:center}.center-v{align-items:center}.row{display:flex}.gap{gap:10px}.neg{color:var(--neg)}.pos{color:var(--pos)}.num{text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.app{display:flex;min-height:100vh}.sidebar{width:232px;flex-shrink:0;background:linear-gradient(180deg,var(--sidebar),color-mix(in srgb,var(--sidebar) 80%,#000));color:var(--sidebar-ink);display:flex;flex-direction:column;padding:22px 16px;position:sticky;top:0;height:100vh}.brand{font-family:Segoe UI Variable Display,ui-rounded,system-ui,sans-serif;font-weight:800;font-size:21px;letter-spacing:-.02em;color:var(--ink)}.sidebar .brand{color:#fff}.brand span{color:var(--brand-2)}.brand.big{font-size:30px;margin-bottom:6px}.sidebar nav{display:flex;flex-direction:column;gap:3px;margin-top:28px}.sidebar nav a{color:var(--sidebar-ink-dim);text-decoration:none;padding:10px 13px;border-radius:var(--r-sm);font-weight:600;font-size:14.5px;transition:background var(--fast),color var(--fast),transform var(--fast)}.sidebar nav a:hover{background:#ffffff12;color:#fff}.sidebar nav a.active{background:#36c59629;color:#fff;box-shadow:inset 3px 0 0 var(--brand-2)}.sidebar-foot{margin-top:auto;font-size:13px;color:var(--sidebar-ink-dim);display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px}.content{flex:1;overflow:auto}.content-pad{padding:30px 36px;max-width:1040px;animation:fadein var(--med)}@keyframes fadein{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:22px}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:12px;flex-wrap:wrap}button.primary,.primary{background:var(--brand);color:#fff;border:none;padding:9px 15px;border-radius:var(--r-sm);font-weight:650;box-shadow:var(--shadow-sm);transition:background var(--fast),transform var(--fast),box-shadow var(--fast)}.primary:hover{background:var(--brand-strong);transform:translateY(-1px);box-shadow:var(--shadow)}.primary:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.primary:disabled{opacity:.55;cursor:default;transform:none;box-shadow:none}.ghost{background:var(--panel);border:1px solid var(--line-strong);padding:8px 13px;border-radius:var(--r-sm);font-weight:600;color:var(--ink-soft);transition:border-color var(--fast),color var(--fast),background var(--fast),transform var(--fast)}.ghost:hover{border-color:var(--brand);color:var(--brand);transform:translateY(-1px)}.ghost:disabled{opacity:.55;cursor:default;transform:none}.link{background:none;border:none;color:var(--brand);padding:0;font-weight:600}.link:hover{text-decoration:underline}.link.danger{color:var(--neg)}.error{background:var(--neg-bg);color:var(--neg);padding:10px 12px;border-radius:var(--r-sm);font-size:14px}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,.modal input,.modal select{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:9px 11px;color:var(--ink);transition:border-color var(--fast),box-shadow var(--fast)}input:focus-visible,select:focus-visible{border-color:var(--brand);box-shadow:var(--ring)}input::placeholder{color:var(--muted)}.auth-wrap{min-height:100vh;display:grid;place-items:center;background:radial-gradient(1200px 600px at 20% -10%,#2c5a4e,transparent),linear-gradient(140deg,#21413a,#14302a 70%);padding:20px}.auth-card{width:372px;max-width:92vw;display:flex;flex-direction:column;gap:13px;border-radius:var(--r-xl);box-shadow:var(--shadow-lg);padding:28px}.auth-card label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--ink-soft);font-weight:600}.auth-card h2{margin-bottom:2px}.rta{display:flex;align-items:baseline;gap:14px;background:linear-gradient(135deg,var(--panel),var(--panel-2));border:1px solid var(--line);border-left:6px solid var(--muted);border-radius:var(--r-lg);padding:22px 26px;margin-bottom:20px;box-shadow:var(--shadow-sm)}.rta.pos{border-left-color:var(--pos);background:linear-gradient(135deg,var(--pos-bg),var(--panel) 60%)}.rta.neg{border-left-color:var(--neg);background:linear-gradient(135deg,var(--neg-bg),var(--panel) 60%)}.rta-amount{font-size:30px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.rta.pos .rta-amount{color:var(--brand-strong)}.rta.neg .rta-amount{color:var(--neg)}.rta-label{color:var(--ink-soft);font-weight:650}.month-nav{display:flex;align-items:center;gap:12px}.month-nav h1{min-width:190px;text-align:center}.month-nav button{background:var(--panel);border:1px solid var(--line-strong);width:34px;height:34px;border-radius:50%;font-size:17px;color:var(--ink-soft);transition:border-color var(--fast),color var(--fast),transform var(--fast)}.month-nav button:hover{border-color:var(--brand);color:var(--brand);transform:scale(1.06)}.budget-table{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.bt-head,.bt-row{display:grid;grid-template-columns:1fr 130px 130px 130px;align-items:center}.bt-head{padding:13px 24px;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--line);background:var(--panel-2);font-weight:700}.bt-group-head{display:flex;justify-content:space-between;align-items:center;padding:11px 24px;background:var(--panel-2);font-weight:750;font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);border-bottom:1px solid var(--line)}.add-cat{background:none;border:none;color:var(--brand);font-size:19px;line-height:1;width:26px;height:26px;border-radius:50%;transition:background var(--fast)}.add-cat:hover{background:var(--pos-bg)}.bt-row{padding:13px 24px;border-bottom:1px solid var(--line);transition:background var(--fast)}.bt-row:last-child{border-bottom:none}.bt-row:hover{background:var(--bg-soft)}.cat-cell{display:flex;flex-direction:column;gap:5px;min-width:0}.cat-line{display:flex;align-items:center;gap:7px}.cat-line .target-btn{opacity:0}.bt-row:hover .target-btn{opacity:.55}.cat-name{font-weight:600}.target-btn{background:none;border:none;color:var(--muted);font-size:13px;line-height:1;transition:opacity var(--fast),color var(--fast)}.target-btn:hover{opacity:1!important;color:var(--brand)}.cat-del:hover{color:var(--neg)!important}.target-bar{height:5px;background:var(--line);border-radius:99px;overflow:hidden;max-width:190px}.target-fill{display:block;height:100%;background:var(--accent);border-radius:99px;transition:width var(--med)}.target-fill.done{background:var(--pos)}.cell-btn{background:none;border:1px solid transparent;border-radius:var(--r-xs);padding:4px 7px;width:100%;text-align:right;font-variant-numeric:tabular-nums;transition:background var(--fast),border-color var(--fast)}.cell-btn:hover{border-color:var(--line-strong);background:var(--bg-soft)}.bt-row input{width:100%;text-align:right;padding:4px 7px;border:1px solid var(--brand);border-radius:var(--r-xs);box-shadow:var(--ring)}.pill{padding:4px 11px;border-radius:99px;font-weight:650;display:inline-block;min-width:70px;font-variant-numeric:tabular-nums;border:none;transition:transform var(--fast),filter var(--fast)}.pill:hover{transform:translateY(-1px);filter:brightness(.97)}.pill.pos{background:var(--pos-bg);color:var(--brand-strong)}.pill.neg{background:var(--neg-bg);color:var(--neg)}.pill.zero{background:var(--zero-bg);color:var(--muted)}.tag{margin-left:8px;font-size:10px;text-transform:uppercase;letter-spacing:.05em;background:var(--warn-bg);color:var(--accent);padding:2px 7px;border-radius:99px;vertical-align:middle;font-weight:700}.net-worth{display:flex;flex-direction:column;gap:5px;margin-bottom:18px;background:linear-gradient(135deg,var(--panel),var(--panel-2))}.big-num{font-size:22px;font-weight:750;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.acct-list{display:flex;flex-direction:column;gap:11px}.acct-card{display:flex;justify-content:space-between;align-items:center;transition:transform var(--fast),box-shadow var(--fast),border-color var(--fast)}.acct-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--line-strong)}.acct-name{font-weight:700}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px;margin-bottom:16px}.form-grid label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--ink-soft);font-weight:600}.form-grid .check{flex-direction:row;align-items:center;gap:8px}.form-grid .primary{grid-column:1 / -1}.sync-status{margin:-8px 0 16px}.rt-badge{color:var(--pos);font-weight:700}.xfer-form{display:flex;align-items:center;gap:9px;margin-bottom:14px;flex-wrap:wrap}.txn-add{display:grid;grid-template-columns:1.2fr 1fr 1.4fr 1.6fr 1fr 1fr auto;gap:9px;margin-bottom:16px;align-items:center}.txn-add input,.txn-add select{min-width:0}.txn-table{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.tt-head,.tt-row{display:grid;grid-template-columns:100px 130px 1fr 200px 110px 36px 36px;align-items:center;gap:9px;padding:12px 22px}.tt-head{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--line);background:var(--panel-2);font-weight:700}.tt-row{border-bottom:1px solid var(--line);font-size:14px;transition:background var(--fast)}.tt-row:last-child{border-bottom:none}.tt-row:hover{background:var(--bg-soft)}.tt-row select{padding:5px 7px;border-radius:var(--r-xs);width:100%}.clr{width:25px;height:25px;border-radius:50%;border:1.5px solid var(--line-strong);background:var(--panel);color:transparent;transition:all var(--fast)}.clr:hover{border-color:var(--pos)}.clr.on{background:var(--pos);border-color:var(--pos);color:#fff}.load-more{text-align:center;margin:16px 0}.report-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-bottom:18px}.report-stats .stat{display:flex;flex-direction:column;gap:5px}.chart-card{margin-bottom:16px}.chart-card h3{margin-bottom:14px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e160e80;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;z-index:900;animation:fadein var(--fast);padding:20px}.modal{background:var(--panel);border-radius:var(--r-xl);padding:24px;width:360px;max-width:92vw;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:13px;animation:pop var(--med)}@keyframes pop{0%{opacity:0;transform:scale(.96) translateY(6px)}to{opacity:1;transform:none}}.modal label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--ink-soft);font-weight:600}.toast-wrap{position:fixed;top:20px;right:20px;display:flex;flex-direction:column;gap:10px;z-index:1000}.toast{background:var(--panel);color:var(--ink);padding:12px 15px;border-radius:var(--r);box-shadow:var(--shadow-lg);font-size:14px;max-width:360px;cursor:pointer;border:1px solid var(--line);border-left:4px solid var(--brand-2);animation:toastin var(--med)}.toast.success{border-left-color:var(--pos)}.toast.error{border-left-color:var(--neg)}@keyframes toastin{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:none}}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:99px;border:2px solid var(--bg)}.tabs{display:flex;gap:6px;margin-bottom:20px;border-bottom:1px solid var(--line)}.tab{background:none;border:none;padding:9px 14px;font-weight:650;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--fast),border-color var(--fast)}.tab:hover{color:var(--ink)}.tab.active{color:var(--brand);border-bottom-color:var(--brand)}.rep-controls{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.range-nav{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:4px 8px}.range-nav span{font-weight:650;min-width:150px;text-align:center}.range-nav button{background:none;border:none;font-size:17px;color:var(--ink-soft);width:26px;height:26px;border-radius:50%;transition:background var(--fast),color var(--fast)}.range-nav button:hover{background:var(--bg-soft);color:var(--brand)}.rep-wrap{padding:0;overflow-x:auto}.rep-table{width:100%;border-collapse:collapse;font-size:14px}.rep-table th,.rep-table td{padding:11px 22px;white-space:nowrap}.rep-table thead th{position:sticky;top:0;background:var(--panel-2);color:var(--muted);font-size:11px;letter-spacing:.05em;font-weight:700;text-transform:uppercase;border-bottom:1px solid var(--line)}.rep-table .rep-label{text-align:left;position:sticky;left:0;background:var(--panel);z-index:1}.rep-table thead .rep-label{z-index:2;background:var(--panel-2)}.rep-table tbody tr{border-bottom:1px solid var(--line)}.rep-table tbody tr:hover td,.rep-table tbody tr:hover .rep-label{background:var(--bg-soft)}.rep-section td{font-weight:750;font-size:15px;padding-top:13px}.rep-section.income td{color:var(--pos)}.rep-section.expense td{color:var(--neg)}.rep-group td{font-weight:700;font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);background:var(--panel-2)}.rep-table tbody tr.rep-group:hover td{background:var(--panel-2)}.rep-row .rep-label{padding-left:38px}.rep-subtotal td{font-weight:700;border-top:1px solid var(--line-strong)}.rep-total td{font-weight:800;border-top:2px solid var(--line-strong);background:var(--panel-2)}.rep-table tbody tr.rep-total:hover td{background:var(--panel-2)}.rep-net td{font-weight:800;border-top:2px solid var(--brand);background:var(--pos-bg)}.rep-table tbody tr.rep-net:hover td{background:var(--pos-bg)}*{-webkit-tap-highlight-color:transparent}.content,.rep-wrap,.txn-table,.budget-table{-webkit-overflow-scrolling:touch}@media (max-width: 768px){body{overscroll-behavior-y:none}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{font-size:16px}.app{flex-direction:column;min-height:100dvh}.content-pad{padding:calc(16px + env(safe-area-inset-top)) 16px calc(80px + env(safe-area-inset-bottom))}.sidebar{position:fixed;left:0;right:0;bottom:0;top:auto;width:100%;height:auto;flex-direction:row;align-items:stretch;gap:4px;padding:6px 8px calc(6px + env(safe-area-inset-bottom));z-index:50;box-shadow:0 -6px 20px #1414142e}.sidebar .brand{display:none}.sidebar nav{flex:1;flex-direction:row;margin-top:0;gap:2px;justify-content:space-around}.sidebar nav a{flex:1;display:flex;align-items:center;justify-content:center;text-align:center;min-height:46px;padding:8px 4px;font-size:12.5px;border-radius:12px}.sidebar nav a.active{box-shadow:none;background:#36c59638}.sidebar-foot{margin:0;flex-direction:row;align-items:center}.sidebar-foot .muted{display:none}.sidebar-foot .link{min-height:46px;display:flex;align-items:center;padding:0 12px;color:var(--sidebar-ink-dim)}.primary,.ghost,.tab,.month-nav button,.range-nav button,.add-cat{min-height:40px}.page-head{margin-bottom:16px}h1{font-size:20px}.month-nav h1{min-width:auto;font-size:19px}.rta{padding:16px}.rta-amount{font-size:25px}.cat-line .target-btn{opacity:.6}.bt-head,.bt-row{grid-template-columns:1fr 84px 96px;padding-left:14px;padding-right:14px}.bt-head>:nth-child(3),.bt-row>:nth-child(3){display:none}.target-bar{max-width:130px}.pill{min-width:0}.txn-add{grid-template-columns:1fr 1fr}.txn-add>:last-child{grid-column:1 / -1}.form-grid{grid-template-columns:1fr 1fr}.xfer-form{gap:8px}.xfer-form select,.xfer-form input{flex:1 1 40%}.tt-head{display:none}.tt-row{grid-template-columns:1fr auto auto;gap:4px 10px;padding:13px 14px}.tt-row>:nth-child(3){grid-column:1;grid-row:1;font-weight:600}.tt-row>:nth-child(5){grid-column:2 / span 2;grid-row:1;justify-self:end;font-weight:600}.tt-row>:nth-child(1){grid-column:1;grid-row:2;color:var(--muted);font-size:12.5px}.tt-row>:nth-child(2){grid-column:2 / span 2;grid-row:2;justify-self:end;font-size:12.5px}.tt-row>:nth-child(4){grid-column:1;grid-row:3}.tt-row>:nth-child(6){grid-column:2;grid-row:3;justify-self:end}.tt-row>:nth-child(7){grid-column:3;grid-row:3;justify-self:end}.tt-row select{width:100%}.report-stats{grid-template-columns:1fr}.rep-controls{gap:8px}.rep-table{font-size:13px}.rep-table th,.rep-table td{padding:8px 12px}.modal{width:100%}}@media (max-width: 380px){.sidebar nav a{font-size:11.5px;padding:8px 2px}.bt-head,.bt-row{grid-template-columns:1fr 72px 88px}}
