:root{--bg: var(--tg-theme-secondary-bg-color, #f2f2f5);--surface: var(--tg-theme-section-bg-color, var(--tg-theme-bg-color, #ffffff));--text: var(--tg-theme-text-color, #111113);--muted: var(--tg-theme-hint-color, #86868b);--accent: var(--tg-theme-button-color, #2a78d6);--accent-text: var(--tg-theme-button-text-color, #ffffff);--link: var(--tg-theme-link-color, #2a78d6);--danger: var(--tg-theme-destructive-text-color, #d03b3b);--separator: var(--tg-theme-section-separator-color, rgba(120, 120, 128, .2));--fill: rgba(120, 120, 128, .12);--fill-strong: rgba(120, 120, 128, .2);--grid: rgba(120, 120, 128, .16);--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 2px 8px rgba(0, 0, 0, .04);--radius: 12px;--chart: #2a78d6;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: var(--tg-theme-secondary-bg-color, #0f0f10);--surface: var(--tg-theme-section-bg-color, var(--tg-theme-bg-color, #1c1c1e));--text: var(--tg-theme-text-color, #f2f2f4);--muted: var(--tg-theme-hint-color, #8d8d93);--fill: rgba(120, 120, 128, .2);--fill-strong: rgba(120, 120, 128, .3);--shadow: none;--chart: #3987e5;color-scheme:dark}}:root[data-theme=dark]{--bg: var(--tg-theme-secondary-bg-color, #0f0f10);--surface: var(--tg-theme-section-bg-color, var(--tg-theme-bg-color, #1c1c1e));--text: var(--tg-theme-text-color, #f2f2f4);--muted: var(--tg-theme-hint-color, #8d8d93);--fill: rgba(120, 120, 128, .2);--fill-strong: rgba(120, 120, 128, .3);--shadow: none;--chart: #3987e5;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;background:var(--bg);color:var(--text)}body{font:15px/1.4 -apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;overscroll-behavior:none}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none;padding:0;text-align:left}svg{flex:none}.app{max-width:640px;margin:0 auto;padding:12px 16px calc(92px + env(safe-area-inset-bottom))}.muted{color:var(--muted)}.row{display:flex;align-items:center;gap:12px}.grow{flex:1;min-width:0}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.empty{text-align:center;color:var(--muted);padding:40px 0;font-size:14px}.error{background:var(--surface);color:var(--danger);border-radius:var(--radius);padding:14px 16px;margin-bottom:12px;font-size:14px}.section-title{margin:22px 16px 8px;font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.section-title.first{margin-top:4px}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow)}.card.pad{padding:16px}.list{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.cat-icon{display:inline-grid;place-items:center;border-radius:9px;flex:none}.li{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:8px 16px;position:relative;background:var(--surface)}.li+.li:before{content:"";position:absolute;top:0;right:0;left:60px;height:1px;background:var(--separator)}.li.inset-sm+.li.inset-sm:before{left:16px}.li:active{background:var(--fill)}.li .title{font-size:15px}.li .sub{font-size:13px;color:var(--muted);margin-top:1px}.li .value{font-weight:500}.li .chev{color:var(--muted);opacity:.6}.period{display:grid;gap:12px;margin-bottom:16px}.segmented{display:flex;background:var(--fill);border-radius:9px;padding:2px}.segmented button{flex:1;padding:6px 0;border-radius:7px;font-size:13px;font-weight:500;text-align:center;color:var(--text)}.segmented button.on{background:var(--surface);box-shadow:0 1px 3px #0000001f}.nav{display:flex;align-items:center;justify-content:space-between}.nav .label{font-weight:600;font-size:17px;letter-spacing:-.01em}.icon-btn{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:var(--text);background:var(--fill)}.icon-btn:disabled{opacity:.3}.hero{padding:18px 16px 16px}.hero .caption{font-size:13px;color:var(--muted)}.hero .value{font-size:34px;font-weight:600;letter-spacing:-.025em;line-height:1.15;margin-top:2px}.hero .meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:13px;color:var(--muted)}.hero .meta span{display:inline-flex;align-items:center;gap:4px}.share{display:flex;gap:2px;height:6px;margin-top:16px;border-radius:3px;overflow:hidden}.share span{display:block;height:100%;min-width:3px}.chart-card{padding:16px 16px 10px}.chart{position:relative;-webkit-user-select:none;user-select:none;touch-action:pan-y}.chart svg{display:block;width:100%;overflow:visible}.chart .tip{position:absolute;top:-4px;transform:translate(-50%,-100%);background:var(--surface);color:var(--text);padding:6px 10px;border-radius:8px;font-size:12px;white-space:nowrap;pointer-events:none;box-shadow:0 2px 12px #00000029;border:1px solid var(--separator)}.chart .tip .muted{display:block}.chart .tip b{font-size:14px;font-weight:600}.meter{height:3px;border-radius:2px;background:var(--fill);margin-top:7px;overflow:hidden}.meter>i{display:block;height:100%;border-radius:2px}.subrow{padding-left:60px}.search{display:flex;align-items:center;gap:8px;height:38px;padding:0 12px;margin-bottom:10px;border-radius:10px;background:var(--fill);color:var(--muted)}.search input{flex:1;min-width:0;border:0;outline:none;background:none;color:var(--text)}.chips{display:flex;gap:6px;overflow-x:auto;margin:0 -16px 4px;padding:0 16px 8px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:none;display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:15px;background:var(--surface);font-size:13px;white-space:nowrap;box-shadow:var(--shadow)}.chip.on{background:var(--text);color:var(--surface)}.totals{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);padding:4px 16px 0}.day{display:flex;justify-content:space-between;margin:20px 16px 6px;font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.src{display:inline-flex;vertical-align:-2px;margin-left:4px}.fab{position:fixed;right:16px;bottom:calc(84px + env(safe-area-inset-bottom));z-index:9;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--accent-text);box-shadow:0 4px 16px #0003}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;justify-content:center;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);border-top:1px solid var(--separator)}.tabbar button{flex:1;max-width:160px;padding:4px 0;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--muted);font-size:11px;font-weight:500}.tabbar button.on{color:var(--accent)}.backdrop{position:fixed;inset:0;z-index:20;background:#0000005c;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s ease-out}.sheet{width:100%;max-width:640px;max-height:92vh;overflow-y:auto;background:var(--bg);border-radius:14px 14px 0 0;padding:8px 16px calc(20px + env(safe-area-inset-bottom));animation:up .2s cubic-bezier(.2,.8,.2,1)}.grabber{width:36px;height:5px;border-radius:3px;background:var(--fill-strong);margin:0 auto 10px}.sheet-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.sheet-head h2{flex:1;margin:0;font-size:17px;font-weight:600}.sheet-head .icon-btn{width:30px;height:30px;color:var(--muted)}@keyframes up{0%{transform:translateY(24px);opacity:0}}@keyframes fade{0%{opacity:0}}.field{display:block;margin-bottom:14px}.field>.label{display:block;font-size:13px;color:var(--muted);margin:0 0 6px 4px}.input,.field select{width:100%;height:44px;padding:0 14px;border-radius:10px;border:0;outline:none;background:var(--surface);appearance:none;-webkit-appearance:none}.input:focus,.field select:focus{box-shadow:0 0 0 2px var(--accent)}.select{position:relative}.select svg{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.amount-input{height:56px;font-size:28px;font-weight:600;letter-spacing:-.02em}.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:48px;border-radius:12px;font-weight:600;font-size:16px}.btn.primary{background:var(--accent);color:var(--accent-text)}.btn.secondary{background:var(--surface);color:var(--link)}.btn.destructive{background:none;color:var(--danger);font-weight:500}.btn+.btn{margin-top:8px}.btn:disabled{opacity:.45}.icon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:6px}.icon-grid button{height:44px;border-radius:10px;display:grid;place-items:center;background:var(--surface);color:var(--muted)}.icon-grid button.on{color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent)}.swatches{display:flex;flex-wrap:wrap;gap:10px}.swatches button{width:30px;height:30px;border-radius:50%;position:relative}.swatches button.on:after{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid var(--text)}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:0 16px;background:var(--surface);border-radius:10px;margin-bottom:14px}.switch{appearance:none;-webkit-appearance:none;width:44px;height:26px;border-radius:13px;background:var(--fill-strong);position:relative;flex:none;transition:background .15s}.switch:after{content:"";position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .15s}.switch:checked{background:#34c759}.switch:checked:after{transform:translate(18px)}.hint{font-size:13px;color:var(--muted);padding:8px 16px 0;line-height:1.45}.danger-zone{margin-top:28px}.archived{opacity:.45}.add-row{color:var(--link)}.add-row .plus{width:32px;display:grid;place-items:center}.li .sub,.meter{display:block}.li.subrow{min-height:46px}.li.subrow:before{left:60px!important}.add-row{gap:8px;font-size:15px}.icon-btn.ghost{background:none;color:var(--muted);margin-right:-8px}.icon-btn.ghost:active{background:var(--fill)}.list-end{height:64px}
