:root{--bg: #F2F4F7;--card: #FFFFFF;--sunk: #E8ECF1;--line: #E2E6EC;--ink: #101418;--ink-2: #5A6470;--mark: #A3ADBA;--accent: #004D98;--accent-w: #E3ECF7;--warn: #8F6400;--warn-mark: #B8830F;--warn-w: #F7EEDA;--error: #A50044;--c-food: #C2610C;--c-groceries:#5C8438;--c-commute: #2E7A70;--c-travel: #6A4FA8;--c-shopping: #A34D82;--c-health: #B04A55;--c-misc: #6E7884;--c-fixed: #7C8695;--nav: rgba(242, 244, 247, .82);--scrim: rgba(12, 18, 26, .42);--sheet-shadow: 0 -6px 34px rgba(12, 18, 26, .2);--grid: rgba(16, 20, 24, .09);--r-ctl: 12px;--r-card: 20px;--r-pill: 999px;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #0C0F13;--card: #151A20;--sunk: #1E242C;--line: #232A33;--ink: #E9EDF2;--ink-2: #98A3B2;--mark: #5D6773;--accent: #4D9BEE;--accent-w: #12202E;--warn: #E8B23C;--warn-mark: #E8B23C;--warn-w: #2A2211;--error: #F0748F;--c-food: #E08A45;--c-groceries:#8FB86A;--c-commute: #4FA79B;--c-travel: #9584D6;--c-shopping: #CE84AC;--c-health: #DC8189;--c-misc: #97A2AF;--c-fixed: #6B7683;--nav: rgba(12, 15, 19, .82);--scrim: rgba(0, 0, 0, .56);--sheet-shadow: 0 -6px 34px rgba(0, 0, 0, .5);--grid: rgba(233, 237, 242, .11);color-scheme:dark}}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.4 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.num{font-variant-numeric:tabular-nums}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.app{height:100%;overflow:hidden}.scroller{position:fixed;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;padding-bottom:calc(64px + env(safe-area-inset-bottom))}.page{width:100%;max-width:30rem;margin:0 auto;padding:0 20px 32px}.navbar{position:fixed;top:0;left:0;right:0;z-index:20;padding-top:env(safe-area-inset-top);background:var(--nav);-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);border-bottom:1px solid transparent;opacity:0;pointer-events:none;transition:opacity .18s ease-out}.navbar.on{opacity:1;border-bottom-color:var(--line)}.navbar .inner{max-width:30rem;margin:0 auto;padding:11px 20px;display:flex;align-items:center;justify-content:center;min-height:44px}.navbar h2{margin:0;font-size:17px;font-weight:600;letter-spacing:-.01em}.header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:calc(env(safe-area-inset-top) + 20px) 0 4px}.eyebrow{font-size:15px;font-weight:500;color:var(--ink-2)}.title{margin:0;font-size:30px;font-weight:700;letter-spacing:-.028em;line-height:1.1}.avatar{flex:none;width:44px;height:44px;border:0;border-radius:var(--r-pill);background:none;display:grid;place-items:center;cursor:pointer;margin:-4px -8px 0 0}.avatar span{width:34px;height:34px;border-radius:var(--r-pill);background:var(--sunk);color:var(--ink-2);display:grid;place-items:center;font-size:13px;font-weight:600;letter-spacing:.02em}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:20;display:grid;grid-template-columns:repeat(4,1fr);background:var(--nav);-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.tabitem{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:none;color:var(--ink-2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:50px;padding:7px 2px 6px;font-size:10.5px;font-weight:500;cursor:pointer}.tabitem svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.tabitem svg .fill{fill:currentColor;stroke:none}.tabitem.on{color:var(--accent)}.tabitem.on span{font-weight:600}.ptr{position:absolute;top:calc(env(safe-area-inset-top) + 6px);left:0;right:0;display:grid;place-items:center;pointer-events:none;z-index:5}.ptr i{display:block;width:22px;height:22px;border-radius:var(--r-pill);border:2px solid var(--mark);border-top-color:var(--accent)}.ptr.spin i{animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.sechead{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:30px 0 12px}.sechead h2{margin:0;font-size:15px;font-weight:600;color:var(--ink-2);letter-spacing:-.005em}.sechead .aside{font-size:13.5px;color:var(--ink-2);font-weight:500}.sechead button.aside{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:none;color:var(--accent);font-size:14px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;justify-content:flex-end;min-width:44px;min-height:44px;padding:12px 2px 12px 14px;margin:-12px -2px -12px 0}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:16px}.card.flush{padding:0;overflow:hidden}.card+.card{margin-top:8px}.lede{font-size:16px;line-height:1.45;margin:0 0 12px}.lede:last-child{margin-bottom:0}.lede b{font-weight:600}.lede b.up{color:var(--warn)}.lede b.ok{color:var(--accent)}.sub{font-size:13px;line-height:1.45;color:var(--ink-2);margin:10px 0 0}.foot{font-size:13.5px;line-height:1.5;color:var(--ink-2);margin:10px 2px 0}.meta{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:14px;color:var(--ink-2)}.meta strong{color:var(--ink);font-weight:600}.dial{position:relative;width:232px;max-width:68vw;margin:6px auto 0}.dial svg{width:100%;height:auto;display:block}.dial .track{fill:none;stroke:var(--sunk);stroke-width:13;stroke-linecap:round}.dial .fill{fill:none;stroke:var(--accent);stroke-width:13;stroke-linecap:round;transition:stroke-dasharray .4s ease-out}.dial.over .fill{stroke:var(--warn-mark)}.dialmid{position:absolute;left:0;right:0;top:30%;text-align:center;pointer-events:none}.dialfig{display:block;font-size:clamp(38px,11.5vw,44px);font-weight:700;letter-spacing:-.035em;line-height:1}.diallabel{display:block;font-size:14px;color:var(--ink-2);margin-top:7px}.dialfoot{text-align:center;font-size:13px;color:var(--ink-2);margin:-4px 0 0}.verdict{text-align:center;font-size:17px;line-height:1.42;margin:16px auto 0;max-width:21rem}.verdict b{font-weight:600;color:var(--accent)}.verdict b.up{color:var(--warn)}.weekstrip{display:flex;gap:4px;align-items:flex-end;margin:2px 0 12px}.wday{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}.wwell{width:100%;height:56px;position:relative;background:var(--sunk);border-radius:6px;overflow:hidden;display:flex;align-items:flex-end}.wbar{width:100%;background:var(--accent);border-radius:5px 5px 0 0}.wbar.over{background:var(--warn-mark)}.wmark{position:absolute;left:2px;right:2px;height:0;border-top:1.5px dashed var(--mark)}.wlabel{font-size:11.5px;color:var(--ink-2);font-weight:500}.wday.now .wlabel{color:var(--ink);font-weight:700}.wday.now .wwell{outline:1.5px solid var(--ink);outline-offset:1.5px}.bar{height:6px;border-radius:var(--r-pill);background:var(--sunk);overflow:hidden;margin:10px 0 8px}.bar.tall{height:22px;border-radius:8px}.bar i{display:block;height:100%;background:var(--accent)}.bar i.over{background:var(--warn-mark)}.bar i.quiet{background:var(--mark)}.trackrow+.trackrow{margin-top:14px}.trackrow .lab{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--ink-2);margin-bottom:6px}.trackrow .bar{margin:0}.spectrum{display:flex;gap:2px;height:10px;border-radius:var(--r-pill);overflow:hidden;background:var(--sunk)}.spectrum.tall{height:14px}.spectrum i{display:block;min-width:3px}.catlist{list-style:none;margin:6px 0 0;padding:0}.catrow{display:grid;grid-template-columns:10px 1fr auto;gap:10px;align-items:center;width:100%;text-align:left;background:none;border:0;padding:11px 0;min-height:44px;cursor:pointer}.catlist li+li .catrow{border-top:1px solid var(--line)}.cdot{width:10px;height:10px;border-radius:3px}.cname{display:block;font-size:15px;font-weight:500}.cmeta{display:block;font-size:12.5px;color:var(--ink-2);margin-top:1px}.cval{font-size:15px;font-weight:600;text-align:right;white-space:nowrap}.cval small{display:block;font-size:12px;font-weight:400;color:var(--ink-2)}.cval.up{color:var(--warn)}.cval.ok{color:var(--accent)}.datehead{position:sticky;top:calc(env(safe-area-inset-top) + 44px);z-index:4;display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 -20px;padding:14px 20px 7px;background:var(--bg);font-size:13px;font-weight:600;color:var(--ink-2)}.datehead .total{font-weight:600}.txn{display:grid;grid-template-columns:36px 1fr auto;gap:12px;align-items:center;width:100%;text-align:left;margin:0 -20px;padding:11px 20px;min-height:60px;background:var(--card);border:0;border-top:1px solid var(--line);cursor:pointer}.txn:first-of-type{border-top:1px solid var(--line)}.txn:active{background:var(--sunk)}.card .txn{margin:0;padding-left:16px;padding-right:16px}.glyph{position:relative;width:36px;height:36px;border-radius:11px;display:grid;place-items:center}.glyph:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:currentColor;opacity:.13}@media(prefers-color-scheme:dark){.glyph:before{opacity:.19}}.glyph svg{position:relative;width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.glyph svg .fill{fill:currentColor;stroke:none}.glyph.lg{width:44px;height:44px;border-radius:14px}.glyph.lg svg{width:23px;height:23px}.tname{display:block;font-size:15.5px;font-weight:500;letter-spacing:-.005em}.tmeta{display:block;font-size:12.5px;color:var(--ink-2);margin-top:1px}.tamt{font-size:15.5px;font-weight:600;text-align:right;white-space:nowrap}.tamt.credit{color:var(--accent)}.tamt.fixed{color:var(--ink-2);font-weight:500}.chip.date{text-transform:none;letter-spacing:.01em}.chip{font-style:normal;font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2);background:var(--sunk);border-radius:5px;padding:2px 5px;margin-left:6px;vertical-align:1px;white-space:nowrap}.search{position:relative;margin:4px 0 12px}.search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:17px;height:17px;fill:none;stroke:var(--ink-2);stroke-width:1.9;stroke-linecap:round;pointer-events:none}.search input{width:100%;min-height:44px;padding:11px 40px 11px 38px;background:var(--sunk);color:var(--ink);border:1px solid transparent;border-radius:var(--r-ctl);font-size:16px;font-weight:500}.search input::placeholder{color:var(--ink-2)}.search input:focus{outline:0;border-color:var(--accent);background:var(--card)}.search .clear{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:36px;height:36px;border:0;background:none;color:var(--ink-2);display:grid;place-items:center;cursor:pointer}.search .clear svg{position:static;transform:none;width:15px;height:15px}.chiprow{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;margin:0 -20px;padding:2px 20px 4px}.chiprow::-webkit-scrollbar{display:none}.fchip{flex:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:14px;font-weight:500;white-space:nowrap;border:1px solid var(--line);background:var(--card);color:var(--ink-2);border-radius:var(--r-pill);padding:0 15px;min-width:44px;min-height:44px;cursor:pointer}.fchip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.summaryline{font-size:13px;color:var(--ink-2);margin:12px 0 0}.chartbox{position:relative}.chart{width:100%;height:auto;display:block;touch-action:pan-y}.chart .grid{stroke:var(--grid);stroke-width:1}.chart .axis{font-size:10px;fill:var(--ink-2)}.chart .axis.end{text-anchor:end}.chart .axis.mid{text-anchor:middle}.chart .axis.now{fill:var(--ink);font-weight:700}.chart .axis.ahead{opacity:.5}.chart .bar-under{fill:var(--accent)}.chart .bar-over{fill:var(--warn-mark)}.chart .bar-live{fill:var(--mark)}.chart .baseline{stroke:var(--ink);stroke-width:1.6;opacity:.42;fill:none}.chart .area{fill:var(--accent);opacity:.14}.chart .area.over{fill:var(--warn-mark);opacity:.1}.chart .line{fill:none;stroke:var(--accent);stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round}.chart .line.over{stroke:var(--warn-mark)}.chart .proj{fill:none;stroke:var(--ink-2);stroke-width:1.6;stroke-dasharray:3 4}.chart .pt{fill:var(--accent)}.chart .pt.over{fill:var(--warn-mark)}.chart .nowline{stroke:var(--mark);stroke-width:1;stroke-dasharray:2 3}.chart .allowline{fill:none;stroke:var(--ink);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;opacity:.45}.chart .allowdot{fill:var(--ink);opacity:.45}.chart .sel{stroke:var(--ink);stroke-width:1.5;opacity:.35}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-top:10px}.legend span{display:flex;align-items:center;gap:6px}.legend i{width:12px;height:3px;border-radius:2px;flex:none}.legend i.under{background:var(--accent)}.legend i.over{background:var(--warn-mark)}.legend i.quiet{background:var(--ink-2)}.readout{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line);font-size:13px;color:var(--ink-2);min-height:22px}.readout strong{color:var(--ink);font-weight:600}.readout .up{color:var(--warn)}.readout .ok{color:var(--accent)}.lrow{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:11px 0;font-size:15px}.lrow+.lrow{border-top:1px solid var(--line)}.lrow .k{color:var(--ink-2);min-width:0}.lrow .v{font-weight:600;white-space:nowrap}.lrow.total{border-top:1.5px solid var(--ink)}.lrow.total .k{color:var(--ink);font-weight:600}.lrow.total .v{font-weight:700}.prow{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;text-align:left;background:none;border:0;padding:13px 0;min-height:48px;font-size:16px;color:inherit}.prow+.prow{border-top:1px solid var(--line)}button.prow{cursor:pointer}.prow .v{font-weight:600;white-space:nowrap}.prow .trail{display:flex;align-items:center;gap:8px;flex:none}.prow .go{color:var(--mark);display:grid;place-items:center}.prow .go svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;display:block}.hero{padding:12px 0 6px}.herolead{font-size:15px;color:var(--ink-2);margin:0 0 4px}.herofig{margin:0;font-size:clamp(36px,10.5vw,42px);font-weight:700;letter-spacing:-.035em;line-height:1.02}.herosub{font-size:16px;margin:8px 0 0}.herosub b{font-weight:600;color:var(--accent)}.herosub b.short{color:var(--warn)}.bigfig{font-size:32px;font-weight:700;letter-spacing:-.03em;margin:0}.biglabel{font-size:14px;color:var(--ink-2);margin:2px 0 0}.disclose{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;background:none;border:0;border-top:1px solid var(--line);color:var(--accent);font-size:14.5px;font-weight:500;text-align:left;padding:14px 0 2px;margin-top:14px;min-height:44px;cursor:pointer}.disclose.bare{border-top:0;margin-top:0;padding-top:2px}.disclose svg{flex:none;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .18s ease-out}.disclose[aria-expanded=true] svg{transform:rotate(180deg)}.disclosed{padding-top:4px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:var(--scrim);border:0;padding:0;animation:fade .2s ease-out}@keyframes fade{0%{opacity:0}}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:41;max-height:88dvh;overflow-y:auto;overscroll-behavior:contain;background:var(--card);border-radius:22px 22px 0 0;box-shadow:var(--sheet-shadow);padding:10px 20px calc(28px + env(safe-area-inset-bottom));animation:rise .26s cubic-bezier(.32,.72,0,1)}@keyframes rise{0%{transform:translateY(100%)}}.sheet .inner{max-width:30rem;margin:0 auto}.grab{width:36px;height:4px;border-radius:var(--r-pill);background:var(--mark);opacity:.6;margin:0 auto 16px}.sheettitle{margin:0;font-size:20px;font-weight:700;letter-spacing:-.02em}.sheetsub{font-size:14px;color:var(--ink-2);margin:2px 0 0}.srow{display:flex;justify-content:space-between;gap:14px;padding:11px 0;font-size:15px;border-top:1px solid var(--line)}.srow .k{color:var(--ink-2)}.srow .v{font-weight:500;text-align:right}.why{background:var(--accent-w);border-radius:var(--r-ctl);padding:12px 14px;font-size:13.5px;line-height:1.45;margin-top:16px}.label{display:block;margin:14px 0 6px;color:var(--ink-2);font-size:13px;font-weight:500}.input{width:100%;min-height:48px;padding:13px 15px;background:var(--sunk);color:var(--ink);border:1px solid transparent;border-radius:var(--r-ctl);font-size:16px;font-weight:500}.input.big{font-size:22px;font-weight:600}.input:focus{outline:0;border-color:var(--accent);background:var(--card)}.btn{display:block;width:100%;min-height:48px;padding:14px 18px;background:var(--accent);color:#fff;border:0;border-radius:13px;font-size:16px;font-weight:600;cursor:pointer;margin-top:18px}.btn:disabled{opacity:.45;cursor:default}.btn.slim{width:auto;min-width:9rem;margin:16px auto 0}.btn.quiet{background:none;color:var(--error);border:1px solid var(--line)}.sk{background:var(--sunk);border-radius:8px}.sk.line{height:13px}@media(prefers-reduced-motion:no-preference){.sk{animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{50%{opacity:.55}}}.empty{padding:44px 20px;text-align:center;color:var(--ink-2);font-size:15px}.err{color:var(--error)}.muted{color:var(--ink-2)}.notice{border-radius:var(--r-ctl);padding:12px 14px;font-size:13.5px;line-height:1.45;margin-top:12px}.notice.warn{background:var(--warn-w);color:var(--ink)}.authwrap{min-height:100dvh;display:grid;place-items:center;padding:24px}.authcard{width:100%;max-width:22rem}.authcard h1{margin:0 0 4px;font-size:28px;font-weight:700;letter-spacing:-.028em}.authcard .tag{color:var(--ink-2);font-size:15px;margin:0 0 24px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
