:root{--bg: #f8f7f4;--card: #ffffff;--text: #1f2937;--muted: #6b7280;--pos: #15803d;--neg: #b91c1c;--accent: #3b82f6;--border: #ebe9e3;--track: #f0eee9;--overlay: rgba(31, 41, 55, .28);--shadow: 0 1px 2px rgba(17, 24, 39, .04)}:root[data-theme=dark]{--bg: #111827;--card: #1f2937;--text: #f9fafb;--muted: #9ca3af;--pos: #4ade80;--neg: #f87171;--accent: #60a5fa;--border: #374151;--track: #374151;--overlay: rgba(0, 0, 0, .5);--shadow: 0 1px 2px rgba(0, 0, 0, .2)}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}.app{max-width:640px;margin:0 auto;padding:28px 22px 72px}.hero-line{gap:10px}.panes{margin-bottom:22px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:48px}.wordmark{font-size:14px;font-weight:600;letter-spacing:.02em;color:var(--muted)}.topbar-actions{display:flex;align-items:center;gap:16px}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:12px;border:1px solid var(--border);background:var(--card);color:var(--muted);cursor:pointer;transition:background .15s,border-color .15s,color .15s}.theme-toggle:hover{color:var(--text)}.theme-toggle:hover{border-color:var(--muted)}.hero{text-align:center;padding:32px 24px 36px;margin-bottom:40px}.hero-label{margin:0;font-size:16px;font-weight:500;color:var(--muted);letter-spacing:.04em}.hero-value{margin:10px 0 2px;font-size:clamp(56px,13vw,84px);font-weight:600;line-height:1.02;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.hero-value.pos{color:var(--pos)}.hero-value.neg{color:var(--neg)}.hero-value.even{color:var(--text)}.hero-sub{margin:0 0 28px;font-size:14px;color:var(--muted)}.view-toggle{display:inline-flex;gap:4px;background:var(--track);border-radius:999px;padding:4px;margin:0 auto 30px}.view-toggle button{font:inherit;font-size:14px;font-weight:500;padding:7px 20px;border:none;border-radius:999px;background:transparent;color:var(--muted);cursor:pointer;transition:background .18s,color .18s}.view-toggle button.active{background:var(--card);color:var(--text);box-shadow:var(--shadow)}.hero-breakdown{max-width:280px;margin:0 auto;display:flex;flex-direction:column;gap:10px}.hero-line{display:flex;justify-content:space-between;font-size:16px;color:var(--text)}.hero-line span:first-child{color:var(--muted)}.hero-line span:last-child{font-variant-numeric:tabular-nums;font-weight:500}.card{background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);padding:22px 24px;margin-bottom:22px}h2{margin:0;font-size:24px;font-weight:600;letter-spacing:-.01em}.list-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:6px}.add-btn{font:inherit;font-size:14px;font-weight:500;color:var(--accent);background:none;border:none;cursor:pointer;padding:4px 2px;display:inline-flex;align-items:center;gap:5px}.add-btn:hover{text-decoration:underline}.empty{color:var(--muted);font-size:15px;margin:14px 0 4px}.rows{list-style:none;margin:8px 0 0;padding:0}.row{display:flex;align-items:center;gap:14px;padding:14px 0;border-top:1px solid var(--border)}.row:first-child{border-top:none}.row.off .row-main,.row.off .row-amount{opacity:.4}.row-main{flex:1;min-width:0;display:flex;flex-direction:column}.row-name{font-size:16px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-meta{font-size:14px;color:var(--muted)}.row-amount{text-align:right;display:flex;flex-direction:column}.row-monthly{font-size:16px;font-weight:500;font-variant-numeric:tabular-nums}.row-monthly.pos{color:var(--pos)}.row-monthly.neutral{color:var(--text)}.row-orig{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.row-actions{display:flex;gap:4px;flex-shrink:0}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:none;border-radius:8px;background:none;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}.icon-btn:hover{background:var(--track);color:var(--text)}.icon-btn.danger:hover{color:var(--neg)}.link-btn{font:inherit;font-size:14px;background:none;border:none;color:var(--accent);cursor:pointer;padding:0;display:inline-flex;align-items:center;gap:6px}.link-btn.muted,.link-btn.danger{color:var(--muted)}.link-btn.danger:hover{color:var(--neg)}.link-btn:hover{text-decoration:underline}.breakdown-list{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:16px}.breakdown-top{display:flex;justify-content:space-between;margin-bottom:7px}.breakdown-name{font-size:15px}.breakdown-value{font-size:15px;font-weight:500;font-variant-numeric:tabular-nums}.breakdown-value.pos{color:var(--pos)}.breakdown-track{display:block;height:6px;border-radius:999px;background:var(--track);overflow:hidden}.breakdown-bar{display:block;height:100%;border-radius:999px}.breakdown-bar.pos{background:var(--pos);opacity:.7}.breakdown-bar.neg{background:var(--muted);opacity:.55}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:20px}.chart-toggles{display:flex;gap:10px}.seg{display:inline-flex;gap:4px;background:var(--track);border-radius:999px;padding:3px}.seg button{font:inherit;font-size:13px;font-weight:500;padding:6px 14px;border:none;border-radius:999px;background:transparent;color:var(--muted);cursor:pointer;transition:background .15s,color .15s;display:inline-flex;align-items:center;gap:6px}.seg button.active{background:var(--card);color:var(--text);box-shadow:var(--shadow)}.chart-body{display:flex;align-items:center;gap:36px}.donut{width:188px;height:188px;flex-shrink:0}.donut-value{font-size:15px;font-weight:600;fill:var(--text);font-family:inherit}.donut-label{font-size:8px;fill:var(--muted);font-family:inherit}.legend{flex:1;list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.legend-row{display:flex;align-items:center;gap:12px;padding:7px 8px;border-radius:8px;cursor:pointer}.legend-row:hover,.legend-row.active{background:var(--track)}.legend-dot{width:11px;height:11px;border-radius:3px;flex-shrink:0}.legend-name{flex:1;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend-val{font-size:15px;font-weight:500;font-variant-numeric:tabular-nums}.legend-pct{width:46px;text-align:right;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.chart-bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px}.bar-row{cursor:pointer}.bar-row.dim{opacity:.4}.bar-top{display:flex;justify-content:space-between;margin-bottom:7px}.bar-name{font-size:15px}.bar-val{font-size:15px;font-weight:500;font-variant-numeric:tabular-nums}.bar-pct{color:var(--muted);font-weight:400;margin-left:10px}.bar-track{display:block;height:10px;border-radius:999px;background:var(--track);overflow:hidden}.bar-fill{display:block;height:100%;border-radius:999px}.drill{margin-top:20px;border-top:1px solid var(--border);padding-top:16px}.drill-head{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:var(--muted);margin-bottom:6px}.drill-head strong{color:var(--text)}.drill-list{list-style:none;margin:0;padding:0}.drill-row{display:flex;align-items:center;gap:12px;padding:8px 0}.drill-name{flex:1}.drill-val{font-variant-numeric:tabular-nums;font-weight:500}.drill-pct{width:46px;text-align:right;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}@media (max-width: 560px){.chart-body{flex-direction:column;gap:20px}}.footer{display:flex;align-items:center;justify-content:space-between;margin-top:36px;padding-top:4px}.tagline{font-size:14px;color:var(--muted);font-style:italic}.footer-actions{display:flex;gap:18px}.hidden-input{display:none}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal-card{position:relative;background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:0 12px 40px #1118272e;width:100%;max-width:420px;padding:26px}.modal-close{position:absolute;top:14px;right:14px;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:8px;background:none;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}.modal-close:hover{background:var(--track);color:var(--text)}.item-form h2{margin-bottom:18px}.segmented{display:flex;gap:6px;background:var(--track);border-radius:12px;padding:4px;margin-bottom:18px}.segmented button{flex:1;font:inherit;font-size:15px;font-weight:500;padding:8px 0;border:none;border-radius:9px;background:transparent;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}.segmented button.active{background:var(--card);color:var(--text);box-shadow:var(--shadow)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field>span{font-size:14px;color:var(--muted)}.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field input,.field select{font:inherit;font-size:16px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text)}.field input:focus,.field select:focus{outline:none;border-color:var(--accent)}.form-error{color:var(--neg);font-size:14px;margin:0 0 14px}.combo{position:relative}.combo-input{width:100%;font:inherit;font-size:16px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text)}.combo-input:focus{outline:none;border-color:var(--accent)}.combo-menu{position:absolute;z-index:5;top:calc(100% + 6px);left:0;right:0;margin:0;padding:6px;list-style:none;max-height:220px;overflow-y:auto;background:var(--card);border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 30px #11182724}.combo-option{display:block;width:100%;text-align:left;font:inherit;font-size:15px;padding:8px 10px;border:none;border-radius:8px;background:none;color:var(--text);cursor:pointer}.combo-option:hover{background:var(--track)}.combo-create{color:var(--accent)}.about h2{margin-bottom:2px}.about-tagline{margin:0 0 18px;font-size:14px;font-style:italic;color:var(--muted)}.about p{font-size:15px;margin:0 0 14px}.about-muted{color:var(--muted)}.about-list{margin:4px 0 8px;padding-left:20px;display:flex;flex-direction:column;gap:10px}.about-list li{font-size:14px;color:var(--muted);line-height:1.5}.about-list strong{color:var(--text);font-weight:600}.cat-intro{margin:0 0 18px;font-size:14px;color:var(--muted)}.cat-add{display:flex;gap:10px;margin-bottom:6px}.cat-add input{flex:1;font:inherit;font-size:16px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text)}.cat-add input:focus{outline:none;border-color:var(--accent)}.cat-list{list-style:none;margin:14px 0 0;padding:0;max-height:280px;overflow-y:auto}.cat-row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-top:1px solid var(--border)}.cat-row:first-child{border-top:none}.cat-name{font-size:15px}.cat-count{font-size:13px;color:var(--muted)}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.btn{font:inherit;font-size:15px;font-weight:500;padding:9px 18px;border-radius:10px;border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;transition:background .15s,border-color .15s}.btn:hover{border-color:var(--muted)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{filter:brightness(.95)}@media (max-width: 480px){.row{flex-wrap:wrap}.row-actions{width:100%;justify-content:flex-end}}@media (min-width: 900px){.app{max-width:1180px;padding:24px 28px 48px}.topbar{margin-bottom:18px}.hero{padding:8px 24px 16px;margin-bottom:22px}.hero-value{font-size:clamp(48px,6.5vw,72px);margin:6px 0 2px}.view-toggle{margin-bottom:16px}.hero-breakdown{flex-direction:row;justify-content:center;gap:40px;max-width:none}.panes{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:stretch}.panes>.card{margin-bottom:0}}@media (min-width: 620px) and (max-width: 899px){.app{max-width:820px}.panes{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:stretch}.panes>.card{margin-bottom:0}}
