:root[data-theme=dark]{--accent: oklch(.78 .18 128);--accent-text: oklch(.78 .18 128);--accent-ink: oklch(.16 .02 128);--accent-soft: oklch(.32 .08 128);--accent-soft-ink: oklch(.9 .08 128);--bg: oklch(.2 .008 128);--page: oklch(.15 .006 128);--ink: oklch(.96 0 0);--ink-dim: oklch(.72 0 0);--card: oklch(.23 .009 128);--muted: oklch(.28 .01 128);--muted-ink: oklch(.7 0 0);--border: oklch(1 0 0 / 12%);--good: oklch(.68 .14 155);--good-text: oklch(.68 .14 155);--good-soft: oklch(.3 .06 155);--warn: oklch(.8 .13 80);--warn-soft: oklch(.32 .07 80);--bad: oklch(.68 .19 27);--bad-soft: oklch(.32 .09 27);--shadow: 0 1px 2px oklch(0 0 0 / .4), 0 8px 24px oklch(0 0 0 / .35)}:root[data-theme=light]{--accent: oklch(.75 .19 128);--accent-text: oklch(.5 .19 128);--accent-ink: oklch(.18 .03 128);--accent-soft: oklch(.94 .05 128);--accent-soft-ink: oklch(.32 .12 128);--bg: oklch(1 0 0);--page: oklch(.985 .002 128);--ink: oklch(.145 0 0);--ink-dim: oklch(.44 0 0);--card: oklch(1 0 0);--muted: oklch(.97 0 0);--muted-ink: oklch(.556 0 0);--border: oklch(.912 .003 128);--good: oklch(.6 .13 155);--good-text: oklch(.5 .13 155);--good-soft: oklch(.94 .05 155);--warn: oklch(.78 .14 80);--warn-soft: oklch(.95 .06 80);--bad: oklch(.58 .22 27);--bad-soft: oklch(.94 .06 27);--shadow: 0 1px 2px oklch(0 0 0 / .05), 0 8px 24px oklch(0 0 0 / .06)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%;overflow:hidden;overscroll-behavior:none}body{font-family:-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:#010201;color:var(--ink);-webkit-font-smoothing:antialiased;height:100vh;height:100dvh}:root[data-theme=light] body{background:#e4e5e3}button,input{font-family:inherit}button{background:none;border:none;color:inherit;text-align:inherit;cursor:pointer}.row-card,.add-row,.tx-row,.budget-card,.menu-row,.filter-option,.settings-row,.qa-selector,.pie-legend-row{width:100%;text-align:left}:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}@media (hover: hover){.row-card:not(.on):hover,.add-row:hover,.tx-row:hover,.budget-card:hover,.menu-row:hover,.filter-option:not(.on):hover,.settings-row:hover,.qa-selector:hover,.pie-legend-row:not(.on):hover,.wallet-pill:not(.on):hover,.filter-chip:not(.on):hover,.icon-pick:not(.on):hover,.icon-btn:not(:disabled):hover{background:var(--muted)}.confirm-btn:not(:disabled):hover,.fab:hover{filter:brightness(.94)}}.shell-row{width:100%}.sidebar{display:none}#app{width:100%;max-width:460px;height:100vh;height:100dvh;margin:0 auto;background:var(--page);color:var(--ink);position:relative;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 0 60px #0006}.app-scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:6px 18px 110px;scrollbar-width:none}.app-scroll::-webkit-scrollbar{width:0}.hscroll{scrollbar-width:none}.hscroll::-webkit-scrollbar{height:0}.page-title{font-size:21px;font-weight:700;margin:8px 0 16px;letter-spacing:-.01em}.pill-tabs{display:flex;background:var(--muted);border-radius:999px;padding:3px;gap:2px}.pill-tab{flex:1;text-align:center;padding:14px 0;font-size:12.5px;font-weight:600;color:var(--muted-ink);border:none;background:transparent;border-radius:999px;cursor:pointer}.pill-tab.on{background:var(--card);color:var(--ink);box-shadow:0 1px 2px #00000026}.card{background:var(--card);border:1px solid var(--border);border-radius:22px;box-shadow:var(--shadow)}.num{font-variant-numeric:tabular-nums}.badge-sm{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:99px;white-space:nowrap}.icon-circle{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:0 0 auto}.icon-circle svg{width:17px;height:17px}.fab{position:absolute;left:50%;bottom:78px;transform:translate(-50%);width:56px;height:56px;border-radius:50%;background:var(--accent);color:var(--accent-ink);border:none;box-shadow:0 10px 20px #00000059;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:5}.fab.hide{display:none}.fab svg{width:24px;height:24px}.tabbar{flex:0 0 auto;display:flex;border-top:1px solid var(--border);background:var(--bg);padding:9px 6px calc(12px + env(safe-area-inset-bottom));position:relative;z-index:4}.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--muted-ink);cursor:pointer;-webkit-user-select:none;user-select:none}.tabbar button.on{color:var(--accent-text)}.tabbar svg{width:19px;height:19px}.tabbar span{font-size:9.5px;font-weight:600}.period-nav{display:flex;align-items:center;justify-content:center;gap:12px;margin:2px 0 14px}.period-nav span{font-size:12.5px;font-weight:600;color:var(--ink-dim);min-width:150px;text-align:center}.hero{padding:4px 2px 18px}.hero-label{font-size:12px;color:var(--muted-ink);margin:0 0 2px}.hero-amount{font-size:36px;font-weight:700;letter-spacing:-.02em;margin:0;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.hero-amount small{font-size:13px;font-weight:600;color:var(--good-text)}.hero-sub{font-size:12.5px;color:var(--ink-dim);margin-top:5px}.hero-track{height:6px;border-radius:99px;background:var(--muted);margin-top:12px;overflow:hidden}.hero-track i{display:block;height:100%;background:var(--accent);border-radius:99px}.section-label{display:flex;align-items:center;justify-content:space-between;margin:20px 0 10px}.section-label h3{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted-ink);margin:0;font-weight:700}.section-label button{font-size:12px;color:var(--accent-text);font-weight:600;cursor:pointer}.attn-row{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.attn-card{flex:0 0 auto;min-width:128px;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:11px 13px;box-shadow:var(--shadow)}.attn-card .cat{font-size:12px;font-weight:600;display:flex;align-items:center;gap:6px;margin-bottom:6px}.attn-card .pct{font-size:17px;font-weight:700}.dot{width:7px;height:7px;border-radius:50%}.empty-hint{font-size:12px;color:var(--muted-ink);padding:10px 2px}.spark{display:flex;align-items:flex-end;gap:6px;height:52px;margin-top:26px}.spark-bar{position:relative;flex:1;height:100%;display:flex;align-items:flex-end}.spark-value{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:4px;font-size:10.5px;font-weight:700;color:var(--ink);white-space:nowrap;pointer-events:none}.spark-bar i{flex:1;background:var(--accent-soft);border-radius:5px 5px 2px 2px;min-height:3px;cursor:pointer}.spark-bar i.now,.spark-bar i.sel{background:var(--accent)}.spark-labels{display:flex;gap:6px;margin-top:6px}.spark-labels span{flex:1;text-align:center;font-size:9.5px;color:var(--muted-ink)}.pie-wrap{display:flex;flex-direction:column;align-items:center;gap:18px}.pie-chart{width:148px;height:148px;border-radius:50%;position:relative;flex:0 0 auto;cursor:pointer}.pie-hole{position:absolute;top:26px;right:26px;bottom:26px;left:26px;border-radius:50%;background:var(--card);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none}.pie-hole strong{font-size:14.5px;font-weight:700}.pie-hole span{font-size:10px;color:var(--muted-ink);max-width:84px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pie-legend{width:100%;display:flex;flex-direction:column;gap:0}.pie-legend-row{display:flex;align-items:center;gap:10px;padding:5px 8px;border-radius:12px;cursor:pointer}.pie-legend-row:active,.pie-legend-row.on{background:var(--muted)}.pie-legend-row .dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}.pie-legend-row .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600}.pie-legend-row .val{flex:0 0 auto;font-size:12.5px;color:var(--muted-ink)}.pie-legend-row.on .val{color:var(--ink);font-weight:700}.sheet-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000073;opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:6}.sheet-backdrop.show{opacity:1;pointer-events:auto}.sheet{position:absolute;left:0;right:0;bottom:0;background:var(--bg);border-radius:24px 24px 0 0;padding:10px 18px 22px;transform:translateY(102%);transition:transform .26s cubic-bezier(.2,.8,.2,1);z-index:7;box-shadow:0 -10px 30px #00000040;max-height:80vh;overflow-y:auto;scrollbar-width:none}.sheet::-webkit-scrollbar{width:0}.sheet.open{transform:translateY(0)}@media (prefers-reduced-motion: reduce){.sheet{transition:none}}.sheet-handle{width:34px;height:4px;border-radius:99px;background:var(--border);margin:2px auto 14px}.sheet-title{font-size:15px;font-weight:700;margin:0 0 14px;text-align:center}.sheet-amount{text-align:center;font-size:38px;font-weight:700;letter-spacing:-.02em;padding:6px 0 4px}.sheet-amount span{font-size:17px;font-weight:600;color:var(--muted-ink);vertical-align:6px;margin-right:4px}.sheet-caption{text-align:center;font-size:11.5px;color:var(--muted-ink);margin-bottom:14px}.icon-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:14px}.icon-pick{aspect-ratio:1;border-radius:14px;border:1.5px solid var(--border);background:var(--card);display:flex;align-items:center;justify-content:center;color:var(--muted-ink);cursor:pointer}.icon-pick svg{width:16px;height:16px}.icon-pick.on{border-color:var(--accent-text);background:var(--accent-soft);color:var(--accent-soft-ink)}.icon-grid-picker{max-height:216px;overflow-y:auto;padding-right:2px;scrollbar-width:none}.icon-grid-picker::-webkit-scrollbar{width:0}.color-row{display:flex;gap:12px;justify-content:center;margin-bottom:14px}.color-row.wrap{flex-wrap:wrap}.color-swatch{width:30px;height:30px;border-radius:50%;border:2px solid transparent;padding:0;cursor:pointer}.color-swatch.on{border-color:var(--ink)}.color-swatch-custom{background:var(--muted);border:1.5px dashed var(--border);display:flex;align-items:center;justify-content:center;color:var(--muted-ink);font-size:16px;line-height:1}.color-swatch-custom.on{border-style:solid}.color-input-hidden{position:absolute;width:0;height:0;padding:0;margin:0;border:none;opacity:0;pointer-events:none}.qa-dropdown-anchor{position:relative;margin-bottom:14px}.qa-selector{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:16px;border:1.5px solid var(--border);background:var(--card);cursor:pointer}.qa-dropdown-anchor .row-main span.over{color:var(--bad);font-weight:700}.qa-dropdown{position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:20;background:var(--bg);border:1px solid var(--border);border-radius:18px;padding:12px;box-shadow:0 12px 32px #00000059}.qa-dropdown .field-input{margin-bottom:8px}.qa-list{max-height:260px;overflow-y:auto;margin:-2px -2px 0;padding:2px;scrollbar-width:none}.qa-list::-webkit-scrollbar{width:0}.qa-list .row-card{border-radius:12px;padding:8px;margin-bottom:2px}.qa-list .row-card:active{background:var(--muted)}.row-card.on{border-color:var(--accent-text);background:var(--accent-soft)}.wallet-row{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}.wallet-pill{flex:1;text-align:center;padding:9px 4px;border-radius:14px;border:1.5px solid var(--border);font-size:11.5px;font-weight:600;color:var(--ink-dim);cursor:pointer;min-width:70px}.wallet-pill.on{border-color:var(--accent-text);color:var(--accent-soft-ink);background:var(--accent-soft)}.field-input{width:100%;padding:11px 13px;border-radius:14px;border:1.5px solid var(--border);background:var(--card);color:var(--ink);font-size:16px;margin-bottom:10px}.field-input:focus{outline:none;border-color:var(--accent-text)}.amount-input{width:100%;text-align:center;font-size:38px;font-weight:700;letter-spacing:-.02em;padding:6px 0 4px;border:none;background:transparent;color:var(--ink);font-variant-numeric:tabular-nums}.amount-input:focus{outline:none;box-shadow:inset 0 -2px 0 var(--accent-text)}.amount-input::placeholder{color:var(--muted-ink)}.confirm-btn{width:100%;padding:15px;border-radius:999px;border:none;background:var(--accent);color:var(--accent-ink);font-size:15px;font-weight:700;cursor:pointer}.confirm-btn:disabled{opacity:.45;cursor:not-allowed}.ghost-btn{width:100%;padding:12px;border-radius:14px;border:1px solid var(--border);background:var(--bg);color:var(--ink);font-size:13px;font-weight:600;cursor:pointer;margin-top:8px}.menu-row{display:flex;align-items:center;gap:13px;padding:13px 6px;border-radius:16px;cursor:pointer}.menu-row:active{background:var(--muted)}.menu-row .row-main strong{display:block;font-size:14px;font-weight:600}.menu-row .row-main span{font-size:11.5px;color:var(--muted-ink)}.menu-row .chev{margin-left:auto;color:var(--muted-ink)}.filter-option{display:flex;align-items:center;justify-content:space-between;padding:13px 14px;cursor:pointer;font-size:13.5px;font-weight:600;color:var(--ink)}.filter-option+.filter-option{border-top:1px solid var(--border)}.filter-option.on{color:var(--accent-text)}.filter-row{display:flex;gap:8px;margin-bottom:8px;overflow-x:auto}.filter-chip{flex:0 0 auto;padding:8px 14px;border-radius:999px;border:1px solid var(--border);background:var(--muted);font-size:12px;font-weight:600;color:var(--muted-ink);cursor:pointer;white-space:nowrap}.filter-chip.on{border-color:var(--accent-text);background:var(--accent-soft);color:var(--accent-soft-ink)}.day-head{display:flex;justify-content:space-between;align-items:baseline;margin:16px 0 8px}.filter-row+.tx-day .day-head{margin-top:2px}.day-head h4{margin:0;font-size:12.5px;font-weight:700;color:var(--ink-dim)}.day-head span{font-size:12px;color:var(--muted-ink)}.tx-row{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid var(--border);cursor:pointer}.tx-row:last-child{border-bottom:none}.tx-main{flex:1;min-width:0}.tx-main strong{display:block;font-size:13.5px;font-weight:600}.tx-main span{font-size:11.5px;color:var(--muted-ink)}.tx-amt{font-size:13.5px;font-weight:700}.budget-card{display:flex;align-items:center;gap:13px;padding:14px;margin-bottom:10px;cursor:pointer}.ring{flex:0 0 auto}.budget-info{flex:1;min-width:0}.budget-info .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:3px;gap:8px}.budget-info .cat{font-size:13.5px;font-weight:600}.budget-info .amt{font-size:12px;color:var(--muted-ink)}.row-card{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:9px;cursor:pointer}.row-main{flex:1;min-width:0}.row-main strong{display:block;font-size:13.5px;font-weight:600}.row-main span{font-size:11.5px;color:var(--muted-ink)}.row-actions{display:flex;gap:6px}.icon-btn{width:44px;height:44px;border-radius:12px;border:1px solid var(--border);background:var(--bg);display:flex;align-items:center;justify-content:center;color:var(--ink-dim);cursor:pointer}.icon-btn svg{width:14px;height:14px}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.add-row{display:flex;align-items:center;justify-content:center;gap:6px;padding:12px;border-radius:16px;border:1.5px dashed var(--border);color:var(--accent-text);font-size:12.5px;font-weight:700;margin-top:2px;cursor:pointer}.goal-card{padding:15px;margin-bottom:12px}.goal-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px;gap:8px}.goal-top strong{font-size:14px;font-weight:700}.goal-top span{font-size:11px;color:var(--muted-ink);display:block;margin-top:2px}.goal-track{height:8px;border-radius:99px;background:var(--muted);position:relative;overflow:visible}.goal-track i{display:block;height:100%;background:var(--accent);border-radius:99px 0 0 99px}.goal-nums{display:flex;justify-content:space-between;margin-top:8px;font-size:12px}.goal-nums .cur{font-weight:700}.goal-nums .tgt{color:var(--muted-ink)}.goal-cta{margin-top:12px;width:100%;padding:9px;border-radius:12px;border:1px solid var(--border);background:var(--bg);font-size:12.5px;font-weight:600;color:var(--ink);cursor:pointer}.goal-link{display:block;margin-top:8px;font-size:12px;color:var(--accent-text);font-weight:600;cursor:pointer;text-align:right}.profile-header{display:flex;align-items:center;gap:14px;margin:4px 0 18px}.avatar-circle{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:700;flex:0 0 auto;cursor:pointer}.profile-header .row-main strong{font-size:16px}.settings-group{margin-bottom:20px}.settings-group h4{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted-ink);margin:0 0 8px}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;cursor:pointer}.settings-row+.settings-row{border-top:1px solid var(--border)}.settings-row span{font-size:13.5px;font-weight:500}.settings-row small{font-size:12px;color:var(--muted-ink)}.settings-group.danger .card{border-color:var(--bad-soft)}.settings-group.danger span{color:var(--bad)}#toastWrap{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:9999;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{background:var(--ink);color:var(--page);font-size:12.5px;font-weight:600;padding:10px 16px;border-radius:99px;box-shadow:0 6px 18px #0000004d;opacity:0;transform:translateY(6px);transition:all .25s ease}.toast.show{opacity:1;transform:translateY(0)}@media (min-width: 640px) and (max-width: 1023px){#app{max-width:560px;box-shadow:0 0 80px #00000073}}@media (min-width: 1024px){.shell-row{display:flex;min-height:100vh}.sidebar{display:flex;flex-direction:column;flex:0 0 220px;width:220px;background:var(--bg);border-right:1px solid var(--border);padding:24px 16px}.sidebar-brand{font-size:20px;font-weight:800;color:var(--accent-text);letter-spacing:-.02em;padding:0 10px 24px}.sidebar-link{display:flex;align-items:center;gap:12px;width:100%;padding:10px;border:none;border-radius:12px;background:none;color:var(--muted-ink);cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:600;text-align:left;-webkit-user-select:none;user-select:none}.sidebar-link:hover{background:var(--muted)}.sidebar-link.on{color:var(--accent-soft-ink);background:var(--accent-soft)}.sidebar-link svg{width:18px;height:18px;flex:0 0 auto}#app{flex:1;max-width:560px;margin:0 auto}.tabbar{display:none}#toastWrap{left:calc(50% + 110px)}}.privacy-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:var(--page);display:flex;justify-content:center}.privacy-overlay-inner{width:100%;max-width:460px;height:100%;overflow-y:auto;padding:24px 18px 40px;scrollbar-width:none}.privacy-overlay-inner::-webkit-scrollbar{width:0}.privacy-overlay-inner section{margin-bottom:20px}.privacy-overlay-inner section h4{font-size:14px;margin:0 0 6px;color:var(--ink)}.privacy-overlay-inner section p{font-size:13px;color:var(--ink-dim);margin:0 0 8px;line-height:1.5}.privacy-overlay-updated{font-size:12px;color:var(--muted-ink);margin:24px 0 20px}.privacy-consent{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:var(--ink-dim);margin:4px 0 14px;cursor:pointer}.privacy-consent input[type=checkbox]{margin-top:2px}.privacy-consent a{color:var(--accent-text);cursor:pointer}
