:root{--bg:#0b0e13;--bg-grad:radial-gradient(1200px 600px at 80% -10%, #12202a 0%, transparent 60%);--surface:#12161d;--surface-2:#171c25;--surface-hover:#1c222d;--border:#232a35;--border-strong:#2f3846;--text:#e7ecf3;--text-muted:#9aa6b6;--text-faint:#67727f;--accent:#34d399;--accent-strong:#10b981;--accent-soft:#34d3991f;--pos:#34d399;--neg:#f87171;--warn:#fbbf24;--info:#60a5fa;--shadow:0 1px 2px #0006, 0 8px 24px #00000040;--shadow-sm:0 1px 2px #0000004d;--r-sm:8px;--r:12px;--r-lg:16px;--sidebar-w:244px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}@media (prefers-color-scheme:light){:root{--bg:#f5f7fa;--bg-grad:radial-gradient(1200px 600px at 80% -10%, #e6f4ee 0%, transparent 60%);--surface:#fff;--surface-2:#f4f6f9;--surface-hover:#eef1f5;--border:#e4e8ee;--border-strong:#d3d9e2;--text:#101828;--text-muted:#556072;--text-faint:#8a94a3;--accent:#059669;--accent-strong:#047857;--accent-soft:#0596691a;--pos:#059669;--neg:#dc2626;--warn:#d97706;--info:#2563eb;--shadow:0 1px 2px #1018280f, 0 8px 24px #1018280f;--shadow-sm:0 1px 2px #1018280f}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);background:var(--bg);background-image:var(--bg-grad);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-attachment:fixed;font-size:15px;line-height:1.5}a{color:inherit;text-decoration:none}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:650}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.app-shell{grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;align-self:start;gap:4px;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:6px 10px 18px;display:flex}.brand-mark{background:linear-gradient(135deg, var(--accent) 0%, var(--accent-strong) 100%);color:#04231a;border-radius:9px;flex-shrink:0;place-items:center;width:30px;height:30px;font-size:16px;font-weight:800;display:grid}.brand-name{letter-spacing:-.02em;font-size:16px;font-weight:700}.brand-sub{color:var(--text-faint);margin-top:-2px;font-size:11px}.nav-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);padding:14px 10px 6px;font-size:11px}.nav-link{border-radius:var(--r-sm);color:var(--text-muted);align-items:center;gap:11px;padding:9px 10px;font-size:14px;font-weight:500;transition:background .12s,color .12s;display:flex}.nav-link:hover{background:var(--surface-hover);color:var(--text)}.nav-link.active{background:var(--accent-soft);color:var(--accent)}.nav-link.disabled{color:var(--text-faint);cursor:default;opacity:.7}.nav-link.disabled:hover{color:var(--text-faint);background:0 0}.nav-ico{stroke-width:1.9px;flex-shrink:0;width:18px;height:18px}.nav-soon{text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);border:1px solid var(--border);border-radius:5px;margin-left:auto;padding:1px 5px;font-size:9.5px}.sidebar-foot{color:var(--text-faint);border-top:1px solid var(--border);margin-top:auto;padding:12px 10px 4px;font-size:11px}.main{min-width:0;padding:32px 40px 80px}.container{max-width:1120px;margin:0 auto}.page-head{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:26px;display:flex}.page-title{font-size:24px}.page-sub{color:var(--text-muted);margin-top:4px;font-size:14px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-sm)}.card-pad{padding:20px}.card-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.card-title{font-size:15px;font-weight:600}.stat-grid{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-sm);padding:18px 20px}.stat.hero{background:linear-gradient(160deg, var(--surface) 0%, var(--surface-2) 100%);grid-column:span 2}.stat-label{color:var(--text-muted);align-items:center;gap:7px;font-size:12.5px;font-weight:500;display:flex}.stat-value{letter-spacing:-.02em;overflow-wrap:anywhere;margin-top:8px;font-size:clamp(21px,6vw,30px);font-weight:700}.stat.hero .stat-value{font-size:clamp(27px,9vw,40px)}.stat-foot{color:var(--text-faint);margin-top:8px;font-size:12.5px}.pos{color:var(--pos)}.neg{color:var(--neg)}.dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.group-head{justify-content:space-between;align-items:baseline;padding:22px 4px 10px;display:flex}.group-name{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:13px;font-weight:600}.group-total{font-size:14px;font-weight:600}.acct-row{border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:14px 20px;transition:background .12s;display:flex}.acct-row:last-child{border-bottom:none}.acct-row:hover{background:var(--surface-hover)}.acct-badge{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;flex-shrink:0;place-items:center;width:38px;height:38px;display:grid}.acct-main{flex:1;min-width:0}.acct-name{white-space:nowrap;text-overflow:ellipsis;font-size:14.5px;font-weight:600;display:block;overflow:hidden}.acct-meta{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:12.5px;display:block;overflow:hidden}.acct-amount{text-align:right;white-space:nowrap;font-size:15px;font-weight:650}.acct-amount .sub{color:var(--text-faint);margin-top:2px;font-size:11.5px;font-weight:500;display:block}.btn{border-radius:var(--r-sm);cursor:pointer;border:1px solid #0000;align-items:center;gap:7px;padding:9px 15px;font-family:inherit;font-size:14px;font-weight:600;transition:background .12s,border-color .12s,opacity .12s;display:inline-flex}.btn-primary{background:var(--accent-strong);color:#042318}@media (prefers-color-scheme:light){.btn-primary{color:#fff}}.btn-primary:hover{background:var(--accent)}.btn-ghost{background:var(--surface);border-color:var(--border-strong);color:var(--text)}.btn-ghost:hover{background:var(--surface-hover)}.btn-danger{border-color:var(--border-strong);color:var(--neg);background:0 0}.btn-danger:hover{background:#f871711a}.btn-sm{padding:6px 11px;font-size:13px}.btn:disabled{opacity:.55;cursor:default}.field{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.field-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.label{color:var(--text-muted);font-size:13px;font-weight:600}.hint{color:var(--text-faint);font-size:12px;font-weight:400}.input,.select{border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--surface-2);width:100%;color:var(--text);padding:10px 12px;font-family:inherit;font-size:14.5px;transition:border-color .12s,box-shadow .12s}.input:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.input-money{position:relative}.input-money input{padding-left:26px}.input-money:before{content:"$";color:var(--text-faint);pointer-events:none;font-size:14.5px;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.empty{text-align:center;color:var(--text-muted);padding:56px 24px}.empty-ico{width:46px;height:46px;color:var(--text-faint);stroke-width:1.6px;margin:0 auto 16px}.empty h3{color:var(--text);margin-bottom:6px}.empty p{max-width:380px;margin:0 auto 20px;font-size:14px}.row-actions{align-items:center;gap:8px;display:flex}.link-accent{color:var(--accent);font-weight:600}.chip{background:var(--surface-2);border:1px solid var(--border);color:var(--text-muted);border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:12px;font-weight:600;display:inline-flex}.callout{border-radius:var(--r);background:var(--accent-soft);border:1px solid var(--border);color:var(--text);gap:12px;margin-bottom:20px;padding:14px 16px;font-size:13.5px;display:flex}.callout svg{width:18px;height:18px;color:var(--accent);flex-shrink:0;margin-top:1px}.form-actions{border-top:1px solid var(--border);gap:10px;margin-top:24px;padding-top:20px;display:flex}.form-narrow{max-width:560px}.txn-row{padding:10px 20px}.txn-date{width:86px;color:var(--text-muted);flex-shrink:0;font-size:13px}.txn-cat-form{flex-shrink:0}.txn-select{width:150px;padding:4px 8px;font-size:12.5px}.txn-amount{min-width:92px;font-size:14px}.txn-meta-mobile,.bottom-nav{display:none}.back-link{color:var(--text-muted);align-items:center;gap:6px;margin-bottom:14px;font-size:13px;font-weight:500;display:inline-flex}.back-link:hover{color:var(--text)}@media (max-width:860px){.app-shell{grid-template-columns:1fr}.sidebar{flex-direction:row;align-items:center;gap:4px;height:auto;padding:10px 16px;position:static}.brand{padding:0}.sidebar .nav-link,.nav-label,.sidebar-foot,.nav-soon,.brand-sub{display:none}.bottom-nav{z-index:50;background:var(--surface);border-top:1px solid var(--border);padding:6px 6px calc(6px + env(safe-area-inset-bottom));display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav a{color:var(--text-faint);border-radius:8px;flex-direction:column;flex:1;align-items:center;gap:3px;padding:5px 2px;font-size:10.5px;font-weight:600;display:flex}.bottom-nav a.active{color:var(--accent)}.bottom-nav .nav-ico{width:21px;height:21px}.main{padding:18px 14px calc(84px + env(safe-area-inset-bottom))}.page-head{flex-wrap:wrap;margin-bottom:20px}.page-title{font-size:21px}.stat-grid{gap:10px;margin-bottom:18px;grid-template-columns:repeat(2,1fr)!important}.stat.hero{grid-column:span 2}.stat{padding:14px 15px}.stat-foot{font-size:11.5px}.field-row{grid-template-columns:1fr}.card-pad{padding:16px}.card-head{flex-wrap:wrap;gap:8px;padding:13px 16px}.acct-row{gap:10px;padding:12px 14px}.acct-amount{font-size:14px}.group-head{padding:18px 2px 8px}.txn-row{grid-template-columns:1fr auto;grid-template-areas:"main amount""cat cat";row-gap:8px;padding:11px 14px;display:grid}.txn-date{display:none}.txn-meta-mobile{display:block}.txn-meta-desktop{display:none}.txn-main{grid-area:main;min-width:0;padding-right:6px}.txn-amount{grid-area:amount;align-self:start;min-width:0}.txn-cat-form{grid-area:cat}.txn-select{width:100%}}
