:root{--f-bg:#f5f5f7;--f-card:#fff;--f-text:#1d1d1f;--f-hint:#6e6e73;--f-accent:#007aff;--f-border:#0000001a;--f-field:#7878801f;--f-danger:#d70015;--f-income:#1f8a3b;--f-warn:#b86e00;--bg:var(--tg-theme-secondary-bg-color,var(--f-bg));--card:var(--tg-theme-section-bg-color,var(--tg-theme-bg-color,var(--f-card)));--text:var(--tg-theme-text-color,var(--f-text));--hint:var(--tg-theme-hint-color,var(--f-hint));--accent:var(--tg-theme-button-color,var(--f-accent));--on-accent:var(--tg-theme-button-text-color,#fff);--danger:var(--tg-theme-destructive-text-color,var(--f-danger));--income:var(--f-income);--warn:var(--f-warn);--border:var(--f-border);--field:var(--f-field);--radius:10px;--radius-ctl:8px;--hairline:.5px;--shadow-card:0 0 0 .5px var(--border), 0 1px 2px #0000000d;--shadow-ctl:0 0 0 .5px var(--border), 0 1px 1px #0000001a;--shadow-pop:0 0 0 .5px var(--border), 0 12px 40px #00000047;--material:color-mix(in srgb, var(--card) 72%, transparent);--blur:saturate(180%) blur(24px);--ring:color-mix(in srgb, var(--accent) 45%, transparent);--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", system-ui, sans-serif;--fs:15px;--fs-sm:13px;--ctl-h:44px;--glass:color-mix(in srgb, var(--card) 38%, transparent);--glass-strong:color-mix(in srgb, var(--card) 62%, transparent);--glass-blur:blur(22px) saturate(190%) brightness(1.04);--glass-rim:inset 1px 1px .5px #ffffffbf, inset -.5px -.5px .5px #ffffff47;--glass-edge:0 0 0 .5px #0000000f;--glass-shadow:0 8px 28px #00000024, 0 2px 6px #0000000f;--ambient-a:color-mix(in srgb, var(--accent) 22%, transparent);--ambient-b:#ff950024;--ambient-c:#34c7591f;--tabbar-h:54px;--tabbar-gap:12px;--sidebar-w:216px;--ease:cubic-bezier(.32, .72, 0, 1);--safe-top:calc(max(env(safe-area-inset-top), var(--tg-safe-top,0px)) + var(--tg-content-safe-top,0px));--safe-bottom:max(env(safe-area-inset-bottom), var(--tg-safe-bottom,0px));--safe-left:max(env(safe-area-inset-left), var(--tg-safe-left,0px));--safe-right:max(env(safe-area-inset-right), var(--tg-safe-right,0px))}@media (prefers-color-scheme:dark){:root{--f-bg:#1e1e1e;--f-card:#2a2a2c;--f-text:#f5f5f7;--f-hint:#a1a1a6;--f-accent:#0a84ff;--f-border:#ffffff1f;--f-field:#7878803d;--f-danger:#ff6961;--f-income:#32d74b;--f-warn:#ffb340;--shadow-card:0 0 0 .5px var(--border);--shadow-ctl:0 0 0 .5px var(--border), 0 1px 1px #0000004d;--glass:color-mix(in srgb, var(--card) 34%, transparent);--glass-strong:color-mix(in srgb, var(--card) 58%, transparent);--glass-rim:inset 1px 1px .5px #ffffff38, inset -.5px -.5px .5px #ffffff14;--glass-edge:0 0 0 .5px #ffffff14;--glass-shadow:0 8px 28px #00000073, 0 2px 6px #0000004d;--ambient-b:#ff95001a;--ambient-c:#34c75914}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%}html,body,#root{height:100%}body{background:radial-gradient(60% 40% at 10% 0%, var(--ambient-a), transparent 70%), radial-gradient(50% 35% at 100% 35%, var(--ambient-b), transparent 70%), radial-gradient(60% 40% at 0% 100%, var(--ambient-c), transparent 70%), var(--bg);color:var(--text);font:var(--fs) / 1.35 var(--font);letter-spacing:-.01em;-webkit-font-smoothing:antialiased;overscroll-behavior:none;touch-action:manipulation;font-variant-numeric:tabular-nums;background-attachment:fixed;margin:0}button,input{font:inherit;color:inherit}button{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;transition:transform .12s var(--ease), opacity .12s, background-color .12s;background:0 0;border:0;padding:0}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.5;cursor:default}:focus-visible{outline:3px solid var(--ring);outline-offset:1px}h1,h2,h3,p{margin:0}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{height:100dvh;padding-top:var(--safe-top);flex-direction:column;display:flex}.content{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-left:var(--safe-left);padding-right:var(--safe-right);padding-bottom:calc(var(--tabbar-h) + var(--tabbar-gap) * 2 + var(--safe-bottom));flex:1;overflow-y:auto}.screen-in{animation:.16s cubic-bezier(.23,1,.32,1) screen-in}@keyframes screen-in{0%{opacity:0;transform:translateY(4px)}}.screen{flex-direction:column;gap:16px;max-width:560px;margin:0 auto;padding:16px 16px 24px;display:flex}.greeting{letter-spacing:-.01em;font-size:22px;font-weight:700}.screen.view-switch{padding-bottom:0}.home-head{justify-content:space-between;align-items:center;display:flex}.home-head .icon-btn{margin-right:-10px}.tabbar{z-index:5;left:calc(var(--safe-left) + 14px);right:calc(var(--safe-right) + 14px);bottom:calc(var(--safe-bottom) + var(--tabbar-gap));height:var(--tabbar-h);background:var(--glass);max-width:520px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--glass-rim), var(--glass-edge), var(--glass-shadow);border-radius:999px;grid-template-columns:repeat(5,1fr);align-items:center;margin:0 auto;padding:4px;display:grid;position:fixed}.tab{min-width:0;height:100%;color:var(--hint);border-radius:999px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:0 2px;font-size:11px;font-weight:500;display:flex}.tab span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.tab[aria-current=page]{color:var(--accent);background:var(--glass-strong);box-shadow:var(--glass-rim), 0 1px 4px #00000014}.fab{background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 82%, white), var(--accent));width:52px;height:40px;color:var(--on-accent);box-shadow:inset 1px 1px .5px #ffffff8c, inset -.5px -.5px .5px #fff3, 0 4px 12px color-mix(in srgb, var(--accent) 40%, transparent);border-radius:999px;justify-self:center;place-items:center;display:grid}.fab-label{display:none}.card{background:color-mix(in srgb, var(--card) 66%, transparent);box-shadow:var(--glass-rim), var(--shadow-card);border-radius:18px;overflow:hidden}.list>.row+.row{position:relative}.list>.row+.row:before{content:"";height:var(--hairline);background:var(--border);position:absolute;top:0;left:14px;right:0}.row{text-align:left;align-items:center;gap:12px;width:100%;min-height:52px;padding:8px 14px;display:flex}button.row:active:not(:disabled){background:var(--field);transform:none}.grow{flex-direction:column;flex:1;min-width:0;display:flex}.grow.title{display:block}.title{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.sub{color:var(--hint);font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.amt{white-space:nowrap;flex:none;font-weight:600}.amt.income,.income{color:var(--income)}.amt.expense,.expense{color:var(--danger)}.bubble{background:var(--field);border-radius:8px;flex:none;place-items:center;width:32px;height:32px;font-size:17px;display:grid}.muted{color:var(--hint);font-size:var(--fs-sm)}.tiny{font-size:11px}.hint{color:var(--hint);font-size:var(--fs-sm)}.big{letter-spacing:-.02em;font-size:28px;font-weight:600}.big.income{color:var(--income)}.big.expense{color:var(--danger)}.link{color:var(--accent);min-height:44px;margin-right:-4px;padding:0 4px;font-size:15px}.icon-btn{width:44px;height:44px;color:var(--accent);border-radius:999px;place-items:center;display:grid}.icon-btn:active:not(:disabled){background:var(--glass-strong);box-shadow:var(--glass-rim)}.icon-btn:disabled{opacity:.3}.section{flex-direction:column;gap:8px;display:flex}.section-head{justify-content:space-between;align-items:center;min-height:44px;margin-bottom:-8px;display:flex}.section-head .icon-btn{margin-right:-10px}.section-head h3,.group-title{font-size:var(--fs-sm);color:var(--hint);font-weight:600}.sub-title{color:var(--hint);padding-left:4px;font-size:13px;font-weight:600}.archived-toggle{align-self:flex-start}.group{flex-direction:column;gap:6px;display:flex}.balances{flex-direction:column;display:flex}.cur-block{flex-direction:column;gap:4px;min-width:0;padding:16px 18px;display:flex}.cur-block+.cur-block{border-top:var(--hairline) solid var(--border)}.cur-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.cur-code{background:var(--field);letter-spacing:.04em;border-radius:5px;padding:2px 7px;font-size:11px;font-weight:600}.cur-block .big{overflow-wrap:anywhere}.cur-accounts{font-size:var(--fs-sm);color:var(--hint);flex-direction:column;gap:2px;margin:8px 0 0;padding:0;list-style:none;display:flex}.cur-accounts li{justify-content:space-between;align-items:center;gap:12px;min-height:28px;display:flex}.cur-accounts .title{flex:1;min-width:0;font-weight:400}.cur-accounts .amt{color:var(--text);font-weight:500}.flows{flex-wrap:wrap;gap:16px;margin-top:8px;font-weight:600;display:flex}.month-switcher{justify-content:space-between;align-items:center;font-size:16px;font-weight:600;display:flex}.segmented{background:var(--field);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-radius:999px;gap:2px;padding:2px;display:flex;box-shadow:inset 0 1px 2px #00000014}.segmented button{min-height:40px;font-weight:500;font-size:var(--fs);color:var(--text);border-radius:999px;flex:1;min-width:0;padding:6px}.segmented.small button{min-height:34px;font-size:var(--fs-sm);padding:4px 6px}.segmented button[aria-selected=true]{background:color-mix(in srgb, var(--accent) 16%, var(--glass-strong));box-shadow:var(--glass-rim), 0 2px 8px #0000001a;font-weight:600}.segmented button.expense[aria-selected=true]{color:var(--danger)}.segmented button.income[aria-selected=true]{color:var(--income)}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{min-height:var(--ctl-h);background:var(--glass);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--glass-rim), var(--glass-edge);font-size:var(--fs);border-radius:999px;padding:6px 12px}.chip.on{background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 82%, white), var(--accent));color:var(--on-accent);box-shadow:inset 1px 1px .5px #ffffff80, 0 3px 10px color-mix(in srgb, var(--accent) 35%, transparent)}.empty{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:40px 24px;display:flex}.empty-title{font-weight:600}.empty .secondary{margin-top:8px}.spinner{border:3px solid var(--field);border-top-color:var(--accent);border-radius:50%;width:26px;height:26px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error{color:var(--danger);font-size:14px}.primary,.secondary,.danger{width:100%;min-height:var(--ctl-h);border-radius:var(--radius-ctl);box-shadow:var(--shadow-ctl);padding:8px 16px;font-weight:500}.primary{background:var(--accent);color:var(--on-accent);box-shadow:0 0 0 .5px #00000026,0 1px 1px #00000026}.secondary{background:var(--card);color:var(--text)}.danger{background:var(--card);color:var(--danger)}.ghost{color:var(--accent);min-height:44px;margin-right:-8px;padding:0 8px}.form{flex-direction:column;gap:16px;display:flex}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.disclosure{min-height:44px;color:var(--accent);justify-content:space-between;align-items:center;font-size:15px;display:flex}.disclosure svg{transition:transform .15s}.disclosure[aria-expanded=true] svg{transform:rotate(90deg)}.label{font-size:var(--fs-sm);color:var(--hint);font-weight:500}input{width:100%;min-width:0;min-height:var(--ctl-h);border-radius:var(--radius-ctl);background:var(--card);box-shadow:var(--shadow-ctl), inset 0 1px 1px #0000000a;border:0;padding:8px 10px;font-size:16px}input:focus-visible{box-shadow:0 0 0 3px var(--ring), 0 0 0 .5px var(--accent);outline:0}input:disabled{opacity:.6}input[type=date]{appearance:none;text-align:left;line-height:1.2;display:block}input[type=date]::-webkit-date-and-time-value{text-align:left;min-height:1.2em}input::placeholder{color:var(--hint)}.row-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.row-2.stack{grid-template-columns:1fr}.amount-field{align-items:baseline;gap:8px;padding:8px 4px;display:flex}.amount-field input{box-shadow:none;letter-spacing:-.02em;background:0 0;min-height:56px;padding:0;font-size:40px;font-weight:600}.amount-field input:focus-visible{box-shadow:none;outline:none}.amount-field input[aria-invalid=true]{color:var(--danger)}.amount-field b{color:var(--hint);font-size:18px}.cat-grid{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px;display:grid}.cat{border-radius:var(--radius);background:var(--card);min-height:68px;box-shadow:var(--shadow-ctl);border:2px solid #0000;flex-direction:column;align-items:center;gap:4px;min-width:0;padding:8px 2px;display:flex}.cat.on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent)}.cat-icon{font-size:24px}.cat-name{text-align:center;overflow-wrap:anywhere;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;max-width:100%;font-size:13px;line-height:1.15;display:-webkit-box;overflow:hidden}.icon-grid{grid-template-columns:repeat(6,1fr);gap:6px;display:grid}.icon-pick{aspect-ratio:1;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-ctl);border:2px solid #0000;font-size:22px}.icon-pick.on{border-color:var(--accent)}.sheet-root{z-index:10;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-backdrop{background:#00000038;animation:.2s ease-out fade-in;position:absolute;inset:0}.sheet{width:100%;max-width:560px;max-height:min(92dvh, calc(100dvh - var(--safe-top) - 8px));background:color-mix(in srgb, var(--bg) 58%, transparent);-webkit-backdrop-filter:blur(30px)saturate(190%);backdrop-filter:blur(30px)saturate(190%);box-shadow:var(--glass-rim), var(--glass-edge), 0 -8px 40px #00000038;animation:slide-up .28s var(--ease);border-radius:28px 28px 0 0;flex-direction:column;display:flex;position:relative}.sheet-top{touch-action:none}.sheet-grab{background:var(--hint);opacity:.4;border-radius:3px;width:36px;height:5px;margin:8px auto 2px}.sheet-head{justify-content:space-between;align-items:center;gap:12px;padding:0 16px;display:flex}.sheet-head h2{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:17px;font-weight:600;overflow:hidden}.sheet-body{overscroll-behavior:contain;padding:8px 16px calc(20px + var(--safe-bottom));overflow-y:auto}.closing .sheet{animation:.18s cubic-bezier(.23,1,.32,1) forwards slide-down}.closing.dragged .sheet{animation:none}.closing .sheet-backdrop{animation:.18s ease-out forwards fade-out}@keyframes slide-up{0%{transform:translateY(100%)}}@keyframes slide-down{to{transform:translateY(100%)}}@keyframes fade-in{0%{opacity:0}}@keyframes fade-out{to{opacity:0}}.stats-head{flex-direction:column;gap:6px;padding:16px;display:flex}.stack-bar{border-radius:5px;gap:2px;height:10px;margin-top:8px;display:flex;overflow:hidden}.stack-bar span{min-width:3px}.stat-row{align-items:flex-start}.stat-line{justify-content:space-between;gap:8px;display:flex}.bar{background:var(--field);border-radius:3px;height:6px;margin:6px 0 4px;display:block;overflow:hidden}.bar span{border-radius:3px;height:100%;display:block}.onboarding{padding-top:calc(32px + var(--safe-top))}.onboarding h1{letter-spacing:-.02em;font-size:26px}@media (hover:hover){.chip:hover:not(.on),.cat:hover:not(.on),.icon-pick:hover:not(.on){filter:brightness(.95)}button.row:hover{background:var(--field)}.secondary:hover,.danger:hover{background:color-mix(in srgb, var(--card) 92%, var(--text))}.primary:hover{filter:brightness(1.06)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.page-head{align-items:center;gap:4px;min-height:44px;display:flex}.page-head h2{flex:1;font-size:17px;font-weight:600}.page-head .back-btn{margin-left:-10px}.searchbar{align-items:center;gap:8px;display:flex}.searchbar input{flex:1}.searchbar .chip{flex-shrink:0}input[type=search]{appearance:none}.delta{font-size:14px;font-weight:600}.averages{gap:24px;margin-top:12px;display:flex}.averages>span{flex-direction:column;display:flex}.trend{align-items:flex-end;gap:8px;height:110px;margin-top:12px;display:flex}.trend-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:4px;min-width:0;height:100%;display:flex}.trend-bar{background:color-mix(in srgb, var(--accent) 35%, var(--field));border-radius:6px 6px 2px 2px;width:100%;display:block}.trend-col.sel .trend-bar{background:var(--accent)}.progress{background:var(--field);border-radius:4px;height:8px;margin:8px 0 6px;display:block;overflow:hidden}.progress>span{background:var(--accent);border-radius:4px;height:100%;display:block}.progress.warn>span{background:var(--warn)}.progress.over>span{background:var(--danger)}.warn-text{color:var(--warn)}.plan-row{text-align:left;align-items:flex-start}.plan-row .stat-line{align-items:baseline}.cur-title{color:var(--hint);padding-left:4px;font-size:13px;font-weight:600}.scope-chips .chip:disabled{opacity:.4}.progress.done>span{background:var(--income)}.row.dim{opacity:.55}.page-head{justify-content:space-between;align-items:center;min-height:44px;display:flex}.page-head h1{font-size:24px;font-weight:700}.page-head .icon-btn{margin-right:-10px}@media (width>=760px){:root{--fs:13px;--fs-sm:11.5px;--ctl-h:28px;--radius-ctl:6px}body{letter-spacing:0}.app{grid-template-columns:var(--sidebar-w) 1fr;display:grid}.content{grid-area:1/2;padding-top:12px;padding-bottom:0}.screen{max-width:720px}.tabbar{border-radius:18px;flex-direction:column;grid-area:1/1;justify-content:flex-start;align-items:stretch;gap:2px;max-width:none;height:auto;margin:8px 0 8px 8px;padding:12px 10px;display:flex;position:static}.tab{height:30px;color:var(--text);border-radius:999px;flex-direction:row;justify-content:flex-start;gap:8px;padding:0 10px;font-size:13px}.tab svg{width:18px;height:18px;color:var(--accent)}.tab[aria-current=page]{color:var(--text);font-weight:600}.fab{order:-1;justify-content:center;align-items:center;gap:6px;width:auto;height:30px;margin-bottom:8px;padding:0 10px;font-size:13px;font-weight:500;display:flex}.fab-label{display:inline}.segmented button,.segmented.small button{min-height:24px;padding:2px 8px}.row{min-height:40px}.icon-btn{width:32px;height:32px}.big{font-size:24px}.sheet-root{align-items:center}.sheet{max-width:460px;max-height:86dvh;box-shadow:var(--glass-rim), var(--glass-edge), 0 24px 60px #0000004d;animation:pop-in .18s var(--ease);border-radius:24px}.sheet-grab{display:none}.closing .sheet,.closing.dragged .sheet{animation:.12s ease-out forwards pop-out}@keyframes pop-in{0%{opacity:0;transform:scale(.96)}}@keyframes pop-out{to{opacity:0;transform:scale(.97)}}}@media (prefers-reduced-transparency:reduce){:root{--material:var(--card);--blur:none;--glass:var(--card);--glass-strong:var(--card);--glass-blur:none}.sheet,.segmented,.chip,.tabbar{-webkit-backdrop-filter:none;backdrop-filter:none}.sheet{background:var(--bg)}.card{background:var(--card)}}
